以下两个查询之间有什么区别: -
因此,通过在" FROM"中指定多个表名称子句(查询1)甚至,我不使用其他表会影响查询结果吗?怎么样?
由于
答案 0 :(得分:3)
使用空结果集的查询是这样的,为了便于阅读而详细说明
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
和order_hotels
中的每个可能的行配对返回一行。您已声明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
子句指定行匹配的含义。