当mysql中涉及交叉连接时,COUNT的行为如何?

时间:2012-10-17 09:09:07

标签: mysql

我在计算使用交叉连接的某个查询的结果数时遇到问题。

数据收集查询

SELECT CF.*, C.Type AS Ctype, C.Resp AS Resp 
FROM Campaigns C, CampaignEntities CF 
WHERE C.clientId = '10' AND LOWER(C.Resp) in ('resp1','resp2','resp3')
ORDER BY entityCode DESC 

并正确返回符合条件的行。

但是,当更改它以获得适合的行数时:

SELECT COUNT(*) as RowNr 
FROM Campaigns C, CampaignEntities CF 
WHERE C.clientId = '10' AND LOWER(C.Resp) in ('resp1','resp2','resp3')
ORDER BY entityCode DESC

我得到数百万的数字(基本上是没有应用任何WHERE条件的连接结果)。

知道为什么它会像这样或者我怎么能得到正确的号码?

1 个答案:

答案 0 :(得分:0)

SELECT COUNT(C.clientId) as RowNr

而不是

SELECT COUNT(*) as RowNr

因为count(*)甚至计算null