1

我有这个非常简单的查询。我无法弄清楚为什么我的查询没有返回空记录。

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
4

3 回答 3

1

无论您在 where 子句中放置什么,都将强制结果集从受影响的表中返回行。

在您的情况下,您要求 table2.someid=2,这对于 mysql 意味着 table2 必须返回一行,有或没有左连接。

解决方案:在左连接中使用此过滤器而不是 where 子句

于 2012-05-18T12:32:37.513 回答
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
于 2012-05-18T12:36:17.377 回答
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
于 2012-05-18T13:06:58.533 回答