我有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,但后来我显然错过了这些数据。我在这做错了什么?
答案 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
。我不确定你的意图,但这应该可以解决你的问题。