我有一个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');