0
是什麼以下兩個查詢之間的區別: -MySql「FROM」子句如何處理多個表名?
- 查詢1: SELECT ORD * FROM訂單奧德order_hotels哦(返回空)
- 查詢2: SELECT ORD * FROM。命令ord(返回所有記錄)
那麼,通過在「FROM」子句(查詢1)中指定多個表名稱,即使我沒有使用其他表將影響查詢結果?如何?
感謝
是什麼以下兩個查詢之間的區別: -MySql「FROM」子句如何處理多個表名?
那麼,通過在「FROM」子句(查詢1)中指定多個表名稱,即使我沒有使用其他表將影響查詢結果?如何?
感謝
您與空的結果集的查詢是這樣的,闡述了可讀性
SELECT ord.*
FROM orders AS ord, order_hotels AS oh
正是由於這個查詢
SELECT ord.*
FROM orders AS ord
INNER JOIN order_hotels AS oh
表的帶點兒懷舊逗號分隔的列表,語法
此查詢,INNER JOIN
沒有任何ON
子句,爲orders
和0123中的每個可能的行配對返回一行。您已經聲明order_hotels
不包含任何行。所以,這個查詢是盡職盡責地返回每一個可能的配對,這是沒有行。
如果你試圖做一些與你填充order_hotels
表甚至在這兩個表有意思,你可以嘗試這樣的事:
SELECT ord.*, oh.hotel_name
FROM orders AS ord
LEFT JOIN order_hotels AS oh ON ord.hotel_id = oh.hotel_id
(我猜列名,我可以有)LEFT JOIN
返回一個結果集,該結果集顯示orders
中的所有行以及order_hotels
中的匹配行。 ON
子句指定行匹配的含義。
簡單的規則:從不在'from'子句中使用逗號。始終使用明確的「連接」。 – 2014-10-20 12:10:50
需要一些幫助來理解上述兩個查詢。 – 2014-10-20 12:13:31
http://blog.codinghorror.com/a-visual-explanation-of-sql-joins/幫助解釋表連接。如果2返回記錄,則1將返回更多。訂單中的記錄數量(例如1000)*在我的示例中,order_Hotels(例如10000)(例如1000萬)中的記錄數量。也許它只是需要很長時間才能運行。當使用兩個表格時,你需要告訴數據庫表格如何關聯,如何加入;像ORDERS.ID和order_Hotels.Order_ID假設一個主鍵外鍵關係,否則你得到一個笛卡爾積(A * B)而不是A相交B. – xQbert 2014-10-20 12:15:18