我有这样的表:
user_id field_id value
1 1 toto
2 1 tata
2 2 tata Job
user_id
是我的用户的ID,field_id
是有关用户(name, job, etc.)
的信息的ID,值是值。
我在HTML/PHP
中使用带有2个字段的searchBar:'name'和'job'。
当有人使用这两个字段搜索用户时,我需要检索符合这两个条件的用户ID。
我的问题是:
如何将SQL
所有user_id
与两个条件匹配,如下所示:
(field_id=1 and value=tata) AND (field_id=2 and value=tata's Job)
谢谢你,祝你有个美好的一天!
答案 0 :(得分:1)
SQL为每一行执行WHERE
逻辑,而不是整个集合。并且字段不能有多个值。因此,您需要使用OR
语句而不是AND
来捕获这两个条件:
Select User_Id, Field_Id, Value
From YourTable
Where (field_id = 1 And value = 'tata')
Or (field_id = 2 And value = 'tata Job')
答案 1 :(得分:1)
一种方法使用聚合:
select user_id
from t
where (field_id = 1 and value = 'tata') or (field_id = 2 and value = 'tata''s Job')
group by user_id
having count(distinct field_id) = 2;
答案 2 :(得分:0)
您可以使用IN
语句,例如:您的表名为users
SELECT user_id
FROM users
WHERE field_id IN (1,2) AND `value` IN ('tata','tata\'s Job')