8

次のデータベースがあります

|   ID   |  numbers   |
|--------|------------|
|    1   | 1,2,3      |
|    2   | 4,5,6      |
|    3   | 2,3,4      |

特定の数値を保持するすべての行を取得するnumbersのは簡単です。

SELECT * FROM mydb WHERE FIND_IN_SET(3, numbers)

これは行1と3を返します

しかし今、私は配列/数値のセットを渡したいと思っており、少なくとも1つの数値が で発生するすべてのエントリを取得したいnumbers、つまり、両方のセットの交差が空ではないようなもの:

SELECT * FROM mydb WHERE SET_INTERSECT('2,4', numbers)!=NULL

すべての行が 2 および/または 4 を保持するため、これはすべての行を返す必要があります。

上記は機能しません。これはmysqlで可能ですか?

ありがとう!

4

2 に答える 2

4

OR を使用しないのはなぜですか?

SELECT * FROM mydb WHERE FIND_IN_SET(2, numbers) or FIND_IN_SET(4, numbers) 
于 2012-09-05T08:38:36.077 に答える
0

テーブル構造を次のように変更した場合:

ID | NUMBERS

 1 | 1
 1 | 2
 1 | 3
 2 | 4
 2 | 5
 ...

SELECT DISTINCT id FROM table WHERE numbers = 2 OR numbers = 4
/*or...*/
/*WHERE numbers IN (2, 4)*/
于 2012-09-05T08:40:04.970 に答える