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是一个varchar具有存储为逗号分隔列表的 id 的列,您可以尝试以下操作:

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 解决方案 WHERE groupid = '1,2' 仅获取具有该特定 ID 的结果。

于 2012-08-27T07:46:33.577 回答