我们有以下查询:使用结果
SELECT
foo_id,
IF ((SELECT
COUNT(foo_mapping_id)
FROM
foo_bar_mappings,
bar
WHERE
foo_mapping_foo_id = foo_id
AND foo_mapping_bar_id = bar_id) > 0,
foo_status,
'inactive') AS foo_status
FROM
foo
WHERE
foo_status = 'inactive'
当我们运行它,我们得到一个空的结果,因为foo_status
不等于到inactive
(虽然有行满足IF
)。 foo_status
是存在于foo
表中的列,但我们想要“覆盖”它。
我们将如何更改此查询,以便我们可以使用foo_status
,如在WHERE
条款中返回的那样?很明显,这个查询已经被简化,使问题更容易提问和理解。
但'拥有'没有任何'group by'。是否有意义? – Rahul
@Rahul。 。 。它在MySQL中是因为这个扩展。我认为扩展的存在是因为MySQL实现了子查询(其他数据库不一定这样做),所以这是一种不使用子查询就可以进行过滤的方法。 –
啊!现在有道理。现在明白了。 – Rahul