我有这个非常简单的查询。我无法弄清楚为什么我的查询没有返回空记录。
SELECT table1.name, table2.name
FROM table
LEFT OUTER JOIN table2
ON table1.id = table2.id
WHERE table1.someid='2'
AND table2.someid=2
ORDER BY table1.order
我也尝试过使用LEFT JOIN,JOIN,INNER JOIN,FULL OUTER JOIN会出错。
这个简单的查询返回所有必需的值。
SELECT table1.name
FROM table
WHERE table1.someid='2'
ORDER BY table1.order
答案 0 :(得分:1)
无论你将什么放在where子句中,都会强制结果集从受影响的表中返回行。
在你的情况下,你要求table2.someid = 2,对于mysql意味着table2必须返回一行,有或没有左连接。
解决方案:在左连接中使用此过滤器而不是where子句
答案 1 :(得分:1)
您需要找出您要搜索“2”的表格。使用您的两个子句,您基本上将其转换为INNER JOIN查询。您需要搜索一个表或另一个表。
有意义吗?
SELECT
table1.name,
table2.name
FROM
table
LEFT JOIN
table2
ON table1.id = table2.id
WHERE
table1.someid = '2'
-- This clause is basically turning this query into an inner join.
-- AND
-- table2.someid = 2
ORDER BY
table1.order
答案 2 :(得分:1)
你的语法错了......
检查这个小提琴:http://sqlfiddle.com/#!2/c368d/1
我已经为你写了这个,也许有帮助。
SELECT table1.name, table2.cute
FROM table1 INNER JOIN table2 ON table1.id_table1 = table2.id_table1
ORDER BY table1.name