我有以下查询,该查询有效,但是我想可以将其改进为更有效的方法,该怎么做?
SELECT
row1.field1 AS field1,
row1.field2 AS field2,
row2.field3 AS field3,
FROM
table1 row1
JOIN
table1 row2
ON
row1.field = row2.field_reference
UNION ALL
SELECT
field1,
field2,
field3,
FROM
table1
WHERE
condition = 'I_am_sure_those_rows_are_not_returned_in_the_SELECT_above'
*在阅读@jarlh对另一个答案的评论后编辑-应该是空的。
怎么样-在WHERE子句中使用LEFT JOIN加上OR语句应返回row2表中的所有内容以及满足您其他条件的所有内容。
SELECT
row1.field1 AS field1,
row1.field2 AS field2,
coalesce(row2.field3, row1.field3) as field3
FROM table1 row1
LEFT JOIN table1 row2 ON row1.field = row2.field_reference
WHERE
row2.field_reference is not null
OR condition = 'I_am_sure_those_rows_are_not_returned_in_the_SELECT_above'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句