我有一个SQL查询:

SELECT count(DISTINCT(email_address))

FROM Mytable

WHERE  TableID = '101'


上面的查询运行正常。

我想获得电子邮件地址的结果,其TableID具有不同的值,例如123,421。

因此,当我编写以下查询时,为什么在MySQLWorkbencch中返回0结果?

SELECT count(DISTINCT(email_address))

    FROM Mytable

    WHERE  TableID = '101'
    AND    TableId = '123'
    AND    TableID = '421'

最佳答案

使用OR代替AND。使用AND,您要求列值等于3个不同的常数值。这违反了宇宙定律。

SELECT count(DISTINCT(email_address))
FROM Mytable
WHERE TableID = '101' OR TableId = '123' OR TableID = '421';


另外,您可以使用IN子句。在实际执行方面,它们是等效的,但在某些情况下,IN可能更易于阅读,尤其是当列表变长时:

SELECT count(DISTINCT(email_address))
FROM Mytable
WHERE TableID IN ('101', '123', '421');

09-20 11:24