我在MySQL中有两个表 - 在这个例子中它们与these非常相似。我想做的事情几乎是一回事,但有一点不同。而不是这样的查询:
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
并选择整个该死的桌子,然后进行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 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第5行的“INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID”附近使用正确的语法
这段代码可以让我有一张只包含我想要的内容的表,而INNER JOIN只在我想要的地方完成。我该怎么做?
要明确:我想首先选择WHERE ...然后在同一个查询中进行内连接。
答案 0 :(得分:0)
不要构成语法规则。它不会起作用。
在SQL的所有实现中,WHERE
子句都在 all 查询中的表引用之后。
https://mariadb.com/kb/en/sql-99/select-statement/
这与RDBMS引擎选择优化获取行的方式无关。 RDBMS将更改它访问表和行的顺序,以尝试为您优化。
答案 1 :(得分:0)
我喜欢这个解决方案。完全有可能做到这一点,但我所做的WHERE陈述是错误的。应该是这样的:
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID
------> WHERE OrderDate = '1996-07-05';
完美无缺。很抱歉回答我自己的问题,但它可能对其他人有帮助。