我知道这应该有效,我已经做了好几百次,但不知何故今晚(或早上,取决于你在哪里)它没有做它应该做的事情。
我正在尝试查询多个表,但是我遇到了一些困难,所以我减少了查询到max:
SELECT tasks.* FROM tasks, assigned WHERE tasks.id = 1 //not working
SELECT * FROM tasks WHERE id = 1 //working
我尝试引用它们但没有成功。现在,第一个陈述出了什么问题?
答案 0 :(得分:1)
您正在使用隐式连接语法。有了这个,你需要在某些方面加入你缺少的那些表:
SELECT tasks.*
FROM tasks, assigned
WHERE tasks.id = assigned.task # <-- missing this
AND tasks.id = 1
您应该练习使用显式JOIN
语法(ANSI标准):
SELECT tasks.col1
FROM tasks
JOIN assigned ON assigned.task = tasks.id
WHERE tasks.id = 1
如果您没有从assigned
中选择任何内容,为什么要获取该结果集?
此外,您应该使用列列表而不是SELECT *
。
<强>更新强>
如果当前tasks
中有记录但assigned
中没有记录,则可以使用LEFT JOIN
,即使没有tasks
,也会返回assigned
中的记录SELECT tasks.col1
FROM tasks
LEFT JOIN assigned ON assigned.task = tasks.id
WHERE tasks.id = 1
中的记录。
{{1}}