MySQL查询没有返回时子查询返回0行
当试图从一个子查询选择字段如果任何一个子查询不返回任何行,然后不返回任何结果(甚至不是空的结果集)MySQL查询没有返回时子查询返回0行
SELECT sub1.field, sub2.another_field
FROM (
(
SELECT field
FROM table
WHERE id=1
) AS sub1, (
SELECT another_field
FROM table
WHERE id=2
) AS sub2
)
我希望在子查询返回0行时包含NULL
值的行。
你需要做的外连接如下
SELECT sub1.field, sub2.another_field
FROM (
SELECT field, id
FROM tab1
WHERE id=1
) AS sub1 LEFT OUTER JOIN (
SELECT another_field, id
FROM tab1
WHERE id=2
) AS sub2
ON sub1.id = 1 and sub2.id = 2
这有帮助,但如果两个子查询都不返回任何行,我什么也得不到。 (再次,我期待1行NULL,NULL) – 2012-03-25 12:05:51
不知道如何完全解决,但这个链接可能有助于http://dev.mysql.com/doc/refman/5.0/en/join。 html – 2012-03-25 12:12:33
接受,因为这解决了原始代码的根本问题,谢谢。我的答案伴随着这一点。 – 2012-03-25 12:59:41
为了解决该查询返回任何的问题时,总所有子查询返回零行我裹了一大堆的UNION
一排空白。
SELECT * FROM (
SELECT sub1.field, sub2.another_field
FROM (
SELECT field, id
FROM tab1
WHERE id=1
) AS sub1
LEFT OUTER JOIN (
SELECT another_field, id
FROM tab1
WHERE id=2
) AS sub2
ON sub1.id = 1 and sub2.id = 2
UNION
SELECT NULL, NULL
) AS t0
如果您发布了实际的代码而不是(看起来像是我)是一个制作的例子,那会更好。 – MichaelRushton 2012-03-25 12:19:57
充其量,你会得到价值,价值。最糟糕的是,你没有得到任何东西。但是,我会预测一个笛卡儿,但在MINIMUM中,其中一个结果查询将不得不返回一个值,以便返回1行。否则,更正没有条目。 – DRapp 2012-03-25 12:20:51