COUNT语法的意外结果

时间:2013-03-05 04:45:25

标签: sql

我想显示属于两个表的两列的行数。但是,结果不是我预期的。我真的很困惑。你能建议吗?感谢。

SELECT COUNT(TABLE1.INTEREST) FROM INCOME; // RESULT = 10

SELECT COUNT(TABLE2.LOAN) FROM EXPEND;  //RESULT = 10

SELECT COUNT(TABLE1.INTEREST), COUNT(TABLE2.LOAN) FROM INCOME, EXPEND;  //RESULT = 100

如果执行第三个SQL命令,为什么结果为“100 | 100”?我希望结果是“10 | 10”。

2 个答案:

答案 0 :(得分:2)

在您上次查询中执行cartesian product

答案 1 :(得分:1)

这是因为你将INCOME的每一行加入到EXPEND的每一行(称为笛卡尔积)

而不是FROM INCOME, EXPEND,你需要做像

这样的事情
FROM INCOME
JOIN EXPEND
ON Income.SomeColumn = Expend.SomeColumn

或在当前查询中添加where子句:

FROM INCOME, EXPEND
WHERE Income.SomeColumn = Expend.SomeColumn