を持つ列で選択した私は、「都市」という名前の列がそれで配列(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が表示されます。
を持つ列で選択した私は、「都市」という名前の列がそれで配列(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が表示されます。
使用FIND_IN_SET:それはデータベースが持つリレーショナルパワーの多くを損なうので、あなたのusers
表にCSVデータを格納する
SELECT *
FROM users
WHERE FIND_IN_SET('1', Cities) > 0
は、次善です。しかし、そのまま進めなければならない場合は、FIND_IN_SET
がそうするかもしれません。
可能であれば、単一の値を列に格納することを強くお勧めします。別のアプローチの間
SELECT *
FROM users
where Concat(',',col,',') like '%,1,%'
私はLIKE
を使用して、この答えを投稿しました。しかし、ティムさんFIND_IN_SET
はここ
私は単にそれはあなたの条件のために働くべきだと考え、より良いアプローチです:
SELECT *
FROM users
WHERE Cities LIKE '%1,%'
検索のためにこのsqlが良い。私はこれを選択しました。 –
あなたはこんにちはhere
SELECT *
FROM users
WHERE INSTR(cities, '1',1)>0;
を参照することができ、あなたのテーブル構造および所望の結果 –
の保存を提供してください列のコンマ区切り値は非常に悪い考えです。テーブルのデザインを変更することを検討してください –
@Prdpこのコメントをいただきありがとうございます。しかし、私はこのテーブルを作成しません。私はこのテーブルを使うことができます。 –