在SQL WHERE子句中为同一字段使用“AND”

时间:2012-03-21 11:07:44

标签: mysql sql

以下是该方案。我有一张表,其中包含所有联系方式。另一个包含所有类别列表的表。第三个表是一个关联表,它具有第一个表的ID和第二个表的ID。

这是我的关联表的样子

contactdid -2 | categoryid -1

contactdid -2 | categoryid -2

contactdid -2 | categoryid -3

contactdid -3 | categoryid -1

contactdid -3 | categoryid -3

这是我下面的SQL代码(使用SQLyog生成,i包含where子句)。

SELECT
    press_contacts.email
FROM
    contacts_category
    INNER JOIN press_category 
        ON (contacts_category.categoryid = press_category.id)
    INNER JOIN press_contacts 
        ON (contacts_category.contactdid = press_contacts.id)
WHERE contacts_category.categoryid = 1 AND contacts_category.categoryid = 2 ;

当我没有在代码中插入AND contacts_category.categoryid = 2时,我得到输出。

任何想法如何解决这个问题。我显然有数据。 在此先感谢您的帮助。

3 个答案:

答案 0 :(得分:5)

contacts_category.categoryid不能同时为1和2,perhabs你的意思是OR而不是AND?

答案 1 :(得分:3)

使用ORIN()代替AND。 字段不能同时具有两个值

答案 2 :(得分:2)

如果您只想查看这两个类别中包含联系人的电子邮件地址,请尝试:

SELECT press_contacts.email
FROM contacts_category
    INNER JOIN press_contacts 
        ON (contacts_category.contactdid = press_contacts.id)
WHERE contacts_category.categoryid in (1, 2)
GROUP BY press_contacts.email
HAVING COUNT(DISTINCT contacts_category.categoryid)=2