我只是想知道如何解决此问题:
例如,当我键入此简单查询时
SELECT CUSTOMERS.CUSTOMER_ID, CUSTOMERS.NAME
FROM CUSTOMERS
WHERE (CUSTOMERS.NAME LIKE 'O%' AND CUSTOMERS.NAME LIKE '%e%') OR CUSTOMERS.NAME LIKE '%t';
我得到以下输出:
127 Alphabet
128 Comcast
129 Target
196 DuPont
197 Avnet
44 Jabil Circuit
58 Health Net
69 Whole Foods Market
226 Office Depot
260 Occidental Petroleum
27 Assurant
158 Owens & Minor
174 Oracle
255 Waste Management
88 Walmart
113 Microsoft
117 Home Depot
但是,当我添加INNER JOIN ORDERS ON CUSTOMERS.CUSTOMER_ID = ORDERS.CUSTOMER_ID
时,我得到的是输出。
44 Jabil Circuit
44 Jabil Circuit
44 Jabil Circuit
58 Health Net
69 Whole Foods Market
44 Jabil Circuit
44 Jabil Circuit
似乎只为在ORDERS表中具有ID的客户显示ID和名称。如何使它再次遍及每个客户,而不仅是ORDERS表中的客户?
答案 0 :(得分:1)
您应该使用LEFT JOIN
而不是INNER JOIN
。
LEFT JOIN
尝试将第二个表的条目与第一个表中的一个进行匹配,同时还显示第二个表中不存在匹配条目的第一个表的结果。在这种情况下,第二个表的条目将仅为NULL
。 INNER JOIN
仅向您提供给出双方条目的数据。
其他可能性是RIGHT JOIN
,它类似于LEFT JOIN
,但是切换了第一张和第二张桌子的角色,而FULL OUTER JOIN
则只需要给出一侧。
更多信息和一些好的示例可以在w3schools上找到。