1

2 つのテーブルに属する 2 つの列の行数を表示したいと思います。しかし、結果は私が期待したものではありません。私はそれについて本当に混乱しています。アドバイスをお願いできますか?ありがとう。

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

3 番目の SQL コマンドを実行すると、結果が「100|100」になるのはなぜですか? 結果は「10 | 10」になると思います。

4

2 に答える 2

2

最後のクエリでデカルト積が実行されます

于 2013-03-05T04:46:55.360 に答える
1

INCOMEこれは、 のすべての行を のすべての行に結合しているためですEXPEND(デカルト積と呼ばれます)。

する代わりに、次のFROM INCOME, EXPENDようなことをする必要があります

FROM INCOME
JOIN EXPEND
ON Income.SomeColumn = Expend.SomeColumn

または、現在のクエリに where 句を追加します。

FROM INCOME, EXPEND
WHERE Income.SomeColumn = Expend.SomeColumn
于 2013-03-05T04:48:39.770 に答える