为什么我的WHERE子句不返回Orders表中的CustomerID?

时间:2014-03-28 14:45:28

标签: sql

我的SQL语句没有返回任何结果。我正在使用www.w3schools.com网站上的表格。我希望Customers表中的所有客户ID都匹配Orders表中的所有CustomerIDS。 SQL语句的作用是它通过表并检查每个CustomerID到每个Orders.CustomersID,当它找到匹配时,它不会返回该记录。

问题:当两个customerIDS相等时,为什么SQL不会返回该行,因为有值会返回true?

SQL语句:

     SELECT * FROM Customers WHERE Customers.CustomersID = Orders.CustomersID;

最后一个想法:什么是最好的免费SQL数据库,可以下载而不会给家庭带来很多麻烦?

3 个答案:

答案 0 :(得分:0)

试试这个:

SELECT Customers.* 
FROM Customers 
JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

答案 1 :(得分:0)

  • 您需要这样的查询:
    SELECT * FROM Customers c INNER JOIN Orders o on c.CustomerID = o.CustomerID;
  • w3schools非常bad resource
  • 选择最佳数据库是stackoverflow的一个不好的问题。但答案是PostgreSQL。 (还有很多其他DBMS也适合你。)

答案 2 :(得分:0)

如果您只是希望有订单的客户使用:

SELECT * 
FROM Customers 
WHERE CustomerID IN 
    (SELECT CustomerID FROM Orders)

如果您使用JOIN,则每位客户可能会获得多条记录(如果客户有多个订单)。您可以使用DISTINCT解决这个问题,但恕我直言IN条款更清晰(可能更快)