我的桌子
id | email | values
1 | a@a | 2,3,
2 | b@b | 1,3,
3 | c@c | 2,
如何将VALUES字段中的数字与ID
中的数字进行比较$sql = "SELECT * FROM table WHERE email = 'c@c' AND id NOT LIKE (each id column) ";
结果= ID 1
答案 0 :(得分:2)
关于数据库规范化的要点是正确且非常重要的:
也就是说,有时我们会遇到其他人真正的,非常非常糟糕的设计决策。 MySQL有一个方便的解决方法(在我看来太方便了),称为find_in_set()
:
SELECT t.*
FROM t.table WHERE email = 'c@c' AND
find_in_set(t.id, values) = 0;
答案 1 :(得分:2)
此查询在值列中查找带有后缀逗号的id。 Id可以在开头,也可以在值列之间。当id为1但是值为(21,3)或(2,31,)时,这也不会返回一行,因为值总是以逗号(,)分隔。
select *
from truck where email='c@abc.com'
and values not like concat(Id,',%')
and values not like concat('%,',Id,',%')
答案 2 :(得分:1)
我相信你正在寻找这样的东西:
select * from yourtable
where [values] like '%,'+cast(id as varchar)+',%'
or [values] like cast(id as varchar)+',%'
or [values] like '%,'+cast(id as varchar)