我有兩個客戶和銷售表。如何計數(1)與sql中的兩個表一起工作
客戶:
custid custname loc 1001 aaa a 1002 bbb b 1003 ccc c
銷售:
salesid salesname saleloc 1001 ddd d 1002 eee e
我查詢
select count(1) from customer, sales
和我得到的計數結果爲6
- 任何人都可以解釋它背後的邏輯嗎?
- 還有,如果使用什麼樣的連接?
- 如果銷售有第三列,則計數結果變爲9.那麼如何發生?
在此先感謝。
你正在做一個CROSS JOIN,該行的笛卡爾積,因爲你沒有連接標準。實質上,你在右邊的每一行都得到一行 - '3 * 2 = 6' ...'3 * 3 = 9'。 count(1)中的1不重要 - 它只會計算行數(1只是表達式 - 您可能還會使用*) – Charleh
您提到在銷售中添加「第三列」?銷售表已經有三列。你的意思是「第三排」?另外,如果您執行'SELECT * ...'而不是'SELECT COUNT(1)...',則可以幫助解釋這一點。分享並享受。 –
@subee。 。 。你應該避免在'from'子句中使用''''。如果你使用'cross join'(這是等價的)寫這個,那麼回答你的問題就顯而易見了。 –