次のデータから正確な行を取得したい
id name groupid
1 robert 1,2
2 henry 11,12
私のクエリは
SELECT * FROM table WHERE groupid LIKE '%1%'
上記のクエリは両方の行を返します
最初の行を取得するにはどうすればよいですか?
FIND_IN_SETを使用できます
SELECT * FROM table WHERE FIND_IN_SET('1', groupid)
ただし、提案として、このようなデータを保存しないでください。
groupid
コンマ区切りリストとして保存されたIDを持つ列であると仮定すると、varchar
これを試すことができます:
select * from table where CONCAT(',',groupid,',') LIKE '%,1,%';
またはより良いアプローチは、mysql でFIND_IN_SET関数を使用することです。
select * from table where find_in_set(1, groupid);
データベース テーブルから正確な行を取得するには、すべてのフィールドを指定するだけです。
SELECT *
FROM myTable
WHERE id = 1
AND name = 'robert'
AND groupid = '1,2'
または、が一意の主キーであると仮定id
すると、それをそのまま使用できます。
SELECT *
FROM myTable
WHERE id = 1
LIKE '%1%' を使用すると、1 を含むすべての結果が返されます。@lc solution WHERE groupid = '1,2' を使用して、その特定の ID を持つ結果のみを取得します。