我试图选择的用户,有超过50分,并已登录在过去3个月。然后,我希望使用两个表中的ID将这些用户连接起来,以便将orders表行附加到每个用户上,上面的查询返回。
以下是我的查询:
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服务器版本对应的手册,以便在第4行使用接近“Orders.UserID = Users.ID极限0,25”附近的“内部连接顺序”。
编辑弄清楚了!
选择Users.EmailAddress,Users.RewardPoints,Orders.UserID,Users.ID,从Orders.UserID = Users.ID的用户内部连接顺序中选择Users.RewardPoints > 50和Users.LastLoggedIn >DATE_SUB(现在(),间隔3个月);
发布于 2015-12-13 16:57:53
您不能在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);
发布于 2015-12-13 16:56:53
WHERE语句应该在JOIN语句之后。
发布于 2015-12-13 17:01:01
要么在联接后移动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;
https://stackoverflow.com/questions/34253655
复制相似问题