1

次のデータから正確な行を取得したい

id   name     groupid

1    robert   1,2
2    henry    11,12

私のクエリは

SELECT * FROM table WHERE groupid LIKE '%1%'

上記のクエリは両方の行を返します
最初の行を取得するにはどうすればよいですか?

4

4 に答える 4

4

FIND_IN_SETを使用できます

SELECT * FROM table WHERE FIND_IN_SET('1', groupid)

ただし、提案として、このようなデータを保存しないでください。

于 2012-08-27T07:46:52.680 に答える
3

groupidコンマ区切りリストとして保存されたIDを持つ列であると仮定すると、varcharこれを試すことができます:

select * from table where CONCAT(',',groupid,',') LIKE '%,1,%';

またはより良いアプローチは、mysql でFIND_IN_SET関数を使用することです。

select * from table where find_in_set(1, groupid);
于 2012-08-27T07:43:12.870 に答える
0

データベース テーブルから正確な行を取得するには、すべてのフィールドを指定するだけです。

SELECT *
FROM myTable
WHERE id = 1
AND name = 'robert'
AND groupid = '1,2'

または、が一意の主キーであると仮定idすると、それをそのまま使用できます。

SELECT *
FROM myTable
WHERE id = 1
于 2012-08-27T07:42:53.433 に答える
0

LIKE '%1%' を使用すると、1 を含むすべての結果が返されます。@lc solution WHERE groupid = '1,2' を使用して、その特定の ID を持つ結果のみを取得します。

于 2012-08-27T07:46:33.577 に答える