从两个表中选择给出不唯一的表/别名

时间:2014-12-17 21:16:26

标签: mysql left-join

我有3个表(user,user_authority_rules_history& authority_rules_history)我想从两个表中选择符合我标准的值。

我的查询看起来像这样

SELECT 
  user_authority_rules_history.download_date, 
  authority_rules_history.* 
FROM 
    user_authority_rules_history, 
    authority_rules_history 
  LEFT JOIN 
    user_authority_rules_history 
  ON 
    user_authority_rules_history.authority_rule_id = authority_rules_history.id 
  LEFT JOIN 
    user 
  ON 
    user_authority_rules_history.user_id = user.id 
WHERE 
  user.id = 1

我可以让它工作,如果我从我的查询中遗漏了user_authority_rules_history.download_date,但后来我显然错过了这些数据。我在这做错了什么?

1 个答案:

答案 0 :(得分:1)

user_authority_rules_history子句中有from的额外表格引用。一个简单的规则:永远不要在from子句中使用逗号。

我认为这是你想要的:

SELECT user_authority_rules_history.download_date, 
       authority_rules_history.* 
FROM authority_rules_history LEFT JOIN 
     user_authority_rules_history 
     ON user_authority_rules_history.authority_rule_id = authority_rules_history.id LEFT JOIN 
     user 
     ON user_authority_rules_history.user_id = user.id 
WHERE user.id = 1

请注意,您正在对user.id = 1进行过滤。这会撤消您的left join,因此您也可以在表格中使用inner join。我不确定你的意图,但这应该可以解决你的问题。