Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 为什么我的WHERE子句不返回Orders表中的CustomerID?_Sql - Fatal编程技术网

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

Sql 为什么我的WHERE子句不返回Orders表中的CustomerID?,sql,Sql,我的SQL语句没有返回任何结果。我正在使用www.w3schools.com网站上的表格。我想让我的Customers表中的所有customer ID与Orders表中的所有customer ID匹配。SQL语句的工作原理是遍历表并检查每个Orders.CustomerID的每个CustomerID,当找到匹配项时不会返回该记录 问题:当两个customerID相等时,SQL为什么不返回行,因为存在将返回true的值? SQL语句: SELECT * FROM Customers WH

我的SQL语句没有返回任何结果。我正在使用www.w3schools.com网站上的表格。我想让我的Customers表中的所有customer ID与Orders表中的所有customer ID匹配。SQL语句的工作原理是遍历表并检查每个Orders.CustomerID的每个CustomerID,当找到匹配项时不会返回该记录

问题:当两个customerID相等时,SQL为什么不返回行,因为存在将返回true的值?

SQL语句:

     SELECT * FROM Customers WHERE Customers.CustomersID = Orders.CustomersID;
最后一个想法:什么是最好的免费SQL数据库,可以在家中下载而不需要很多麻烦?

试试这个:

SELECT Customers.* 
FROM Customers 
JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
  • 您需要这样的查询:
    SELECT*
    来自客户c
    c.CustomerID=o.CustomerID上的内部联接订单o
  • 这是一个非常重要的问题
  • 选择最好的数据库对于stackoverflow来说是一个糟糕的问题。但答案是PostgreSQL。(还有许多其他DBMS也适合您。)

如果您只想要有订单的客户,请使用:

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

如果您使用
JOIN
,则每个客户可能会获得多条记录(如果该客户有多个订单)。您可以使用
DISTINCT
解决这个问题,但是
子句中的
更干净(可能更快)

您没有指定SQL语句中的顺序。您需要某种类型的联接。FROM子句中存在语法错误。-->请记住,我正在w3schools浏览器中运行此操作,因为我尚未在公司服务器上收到正确的权限。-->对我来说,在w3schools网站上的工作方式就像一个champ,但必须修复您的列名(CustomerID而不是CustomerID),这是标准SQl,没有语法错误。可能您键入错误。没有为一个或多个必需参数提供值。-->结果是这样的。我正在运行这些示例-->--是在访问公司数据库之前我运行所有示例的位置。请更正,您可以避免重复,但由于子查询的原因,可能会花费更高的成本。另一种(更好的)删除重复项的方法是先加入,然后分组。