多个Where子句使用相同的列SQL

时间:2016-07-19 13:43:18

标签: php sql

我有这样的表:

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)

谢谢你,祝你有个美好的一天!

3 个答案:

答案 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')