SQL: INNER JOIN 在 WHERE 语句后不起作用?
SQL: INNER JOIN won't work after WHERE statement?
我在 MySQL 中有两个 table - 它们与本例中的 these 非常相似。我想做的几乎是同一件事,只有一点不同。而不是执行此查询:
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
和 select 整个该死的 table 然后做 INNER JOIN,我想这样做:
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
------> WHERE OrderDate = '1996-07-05'
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
顺便说一句,箭头只是为了帮助您找出不同之处。
但这不起作用。我收到以下错误:
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID' at line 5
那段代码允许我有一个 table 只有我想要的内容,并且 INNER JOIN 只在我想要的地方完成它。我该怎么做?
明确一点:我想先 select WHERE... 然后在同一个查询中进行内部连接。
不要编语法规则。它不会工作。
在 SQL 的所有实现中,WHERE
子句位于 all 查询中的 table 引用之后。
https://mariadb.com/kb/en/sql-99/select-statement/
这与 RDBMS 引擎选择优化行提取的方式无关。 RDBMS 将更改它访问 table 和行的顺序以尝试为您优化。
我喜欢这个解决方案。这样做是完全可能的,但我所做的 WHERE 声明是在错误的位置。它应该是这样的:
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID
------> WHERE OrderDate = '1996-07-05';
这很完美。很抱歉回答我自己的问题,但这可能会对其他人有所帮助。
我在 MySQL 中有两个 table - 它们与本例中的 these 非常相似。我想做的几乎是同一件事,只有一点不同。而不是执行此查询:
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
和 select 整个该死的 table 然后做 INNER JOIN,我想这样做:
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
------> WHERE OrderDate = '1996-07-05'
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
顺便说一句,箭头只是为了帮助您找出不同之处。
但这不起作用。我收到以下错误:
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID' at line 5
那段代码允许我有一个 table 只有我想要的内容,并且 INNER JOIN 只在我想要的地方完成它。我该怎么做?
明确一点:我想先 select WHERE... 然后在同一个查询中进行内部连接。
不要编语法规则。它不会工作。
在 SQL 的所有实现中,WHERE
子句位于 all 查询中的 table 引用之后。
https://mariadb.com/kb/en/sql-99/select-statement/
这与 RDBMS 引擎选择优化行提取的方式无关。 RDBMS 将更改它访问 table 和行的顺序以尝试为您优化。
我喜欢这个解决方案。这样做是完全可能的,但我所做的 WHERE 声明是在错误的位置。它应该是这样的:
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID
------> WHERE OrderDate = '1996-07-05';
这很完美。很抱歉回答我自己的问题,但这可能会对其他人有所帮助。