SQL join,从一张表中获取数据

问题描述 投票:0回答:3

我有一个关于联接的问题。如何获取指定名称的客户的所有订单。

在我的结果中,我只想拥有“订单”表中的所有列和“客户”表中的零列。在这里你可以看到表格: https://www.w3schools.com/sql/sql_join.asp

SELECT *
FROM Orders
LEFT JOIN Customers
ON Orders.CustomerID=Customers.CustomerID
WHERE CustomerName = "Wilman Kala"

我在这里测试了这个: https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_join 它返回两个表中的所有列。

预先感谢您的帮助。

sql sqlite select join
3个回答
4
投票

*
之前添加表名称。

SELECT orders.*
FROM Orders
LEFT JOIN Customers ON Orders.CustomerID=Customers.CustomerID
WHERE CustomerName = "Wilman Kala"

或者更好地命名您要选择的每一列

select orders.col1, orders.col2, ...

1
投票

如果您只需要

Orders
中的列,您可以考虑
IN
EXISTS
:

SELECT o.*
FROM Orders o
WHERE EXISTS (SELECT 1
              FROM Customers c
              WHERE o.CustomerID = c.CustomerID AND
                    c.CustomerName = 'Wilman Kala'
             );

这与

JOIN
版本略有不同。如果两个客户具有相同的姓名,则每个订单只会返回一次。在带有
JOIN
的版本中,如果名称重复,订单也会重复。

通常,不重复行为就是您想要的。


1
投票

尝试:

SELECT O.*
FROM Orders O
LEFT JOIN Customers C ON O.CustomerID=C.CustomerID
WHERE C.CustomerName = 'Wilman Kala'
© www.soinside.com 2019 - 2024. All rights reserved.