发布
社区首页 >问答首页 >选择,在何处,然后内部连接两个表

选择,在何处,然后内部连接两个表
EN

Stack Overflow用户
提问于 2015-12-13 16:53:48
回答 3查看 1.5K关注 0票数 1

我试图选择的用户,有超过50分,并已登录在过去3个月。然后,我希望使用两个表中的ID将这些用户连接起来,以便将orders表行附加到每个用户上,上面的查询返回。

以下是我的查询:

代码语言:javascript
代码运行次数:0
复制
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个月);

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-13 16:57:53

您不能在where条件之后加入表,应该将其放在最后(在您的情况下)。

代码语言:javascript
代码运行次数:0
复制
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
EN

Stack Overflow用户

发布于 2015-12-13 16:56:53

WHERE语句应该在JOIN语句之后。

票数 0
EN

Stack Overflow用户

发布于 2015-12-13 17:01:01

要么在联接后移动WHERE:

代码语言:javascript
代码运行次数:0
复制
select ...
from ...
join ...
where ...

或者使用内部查询:

代码语言:javascript
代码运行次数:0
复制
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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34253655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档