2016-09-11 5 views
0

を持つ列で選択した私は、「都市」という名前の列がそれで配列(1,2を、持っているこのテーブル内の「ユーザー」SQL表の配列(値1、値2、...)

と呼ばれるSQLテーブルを持っています3、...)

行1: "1,2,15,69,98"

行2: "7,9,15,5,69"

ROW3:「7,3 、1,5,6 "

同じ時刻に複数の値を持つ行を選択する方法

の場合:1を含む行を選択したい

結果にrow1とrow3が表示されます。

+0

を参照することができ、あなたのテーブル構造および所望の結果 –

+2

の保存を提供してください列のコンマ区切り値は非常に悪い考えです。テーブルのデザインを変更することを検討してください –

+0

@Prdpこのコメントをいただきありがとうございます。しかし、私はこのテーブルを作成しません。私はこのテーブルを使うことができます。 –

答えて

1

使用FIND_IN_SET:それはデータベースが持つリレーショナルパワーの多くを損なうので、あなたのusers表にCSVデータを格納する

他の人が述べたように
SELECT * 
FROM users 
WHERE FIND_IN_SET('1', Cities) > 0 

は、次善です。しかし、そのまま進めなければならない場合は、FIND_IN_SETがそうするかもしれません。

1

可能であれば、単一の値を列に格納することを強くお勧めします。別のアプローチの間

SELECT * 
FROM users 
where Concat(',',col,',') like '%,1,%' 

私はLIKEを使用して、この答えを投稿しました。しかし、ティムさんFIND_IN_SETはここ

1

私は単にそれはあなたの条件のために働くべきだと考え、より良いアプローチです:

SELECT * 
FROM users 
WHERE Cities LIKE '%1,%' 
+0

検索のためにこのsqlが良い。私はこれを選択しました。 –

2

あなたはこんにちはhere

SELECT * 
FROM users 
WHERE INSTR(cities, '1',1)>0; 
関連する問題