我试图选择拥有50分以上并在过去3个月内登录的用户。然后,我想要使用两个表中的ID来加入这些用户,这样我就可以在上面的查询返回的每个用户附加订单表行。
这是我的疑问:
SELECT Users.EmailAddress, Users.RewardPoints, Orders.UserID, Users.ID From Users
WHERE RewardPoints > 50 AND Users.LastLoggedIn > DATE_SUB(NOW(), INTERVAL 3 MONTH)
Inner Join Orders ON Orders.UserID = Users.ID;
但它给了我这个错误:
错误:#1064 - 您的SQL语法出错;查看与MariaDB服务器版本对应的手册,以获得在“内部联接订单”附近使用的正确语法 On Orders.UserID = Users.ID LIMIT 0,25'在第4行
编辑想出来了!
SELECT Users.EmailAddress,Users.RewardPoints,Orders.UserID,Users.ID, 来自用户 在Orders.UserID = Users.ID上的INNER JOIN订单 WHERE Users.RewardPoints> 50 AND Users.LastLoggedIn> DATE_SUB(NOW(),INTERVAL 3 MONTH);
答案 0 :(得分:1)
你不能在where条件之后加入表格,你应该把它放在最后(在你的情况下)。
SELECT Users.EmailAddress, Users.RewardPoints, Orders.UserID, Users.ID
FROM Users
INNER JOIN Orders On Orders.UserID = Users.ID
WHERE RewardPoints > 50 AND Users.LastLoggedIn > DATE_SUB(NOW(), INTERVAL 3 MONTH);
答案 1 :(得分:0)
WHERE语句应该在 JOIN语句之后
答案 2 :(得分:0)
在JOIN之后移动WHERE:
select ...
from ...
join ...
where ...
或使用内部查询:
SELECT Users.EmailAddress, Users.RewardPoints, Orders.UserID, Users.ID
From (select ^ from Users
WHERE RewardPoints > 50 AND Users.LastLoggedIn > DATE_SUB(NOW(), INTERVAL 3 MONTH)) Users
Inner Join Orders
On Orders.UserID = Users.ID;