如何仅在某些情况下应用UNION(MySQL)
我有以下-简化-查询:如何仅在某些情况下应用UNION(MySQL),mysql,Mysql,我有以下-简化-查询: SELECT id FROM table_x UNION ALL SELECT 0 AS id 但是,我只想在查询的第一部分返回至少1个结果时附加UNION部分,例如: 带有一个条目(id=1)的表x: 表x空: table_x: empty Current result: 0 Desired result: empty 有没有办法在查询中实现这一点?非常感谢您的光临。只要您的桌子还在。你可以这样做 SELECT IF ( a is NULL, NULL, CONC
SELECT id
FROM table_x
UNION ALL
SELECT 0 AS id
但是,我只想在查询的第一部分返回至少1个结果时附加UNION部分,例如:
带有一个条目(id=1)的表x:
表x空:
table_x: empty
Current result: 0
Desired result: empty
有没有办法在查询中实现这一点?非常感谢您的光临。只要您的桌子还在。你可以这样做
SELECT
IF ( a is NULL, NULL, CONCAT(a,",",b))
FROM(
SELECT
(SELECT * From myTable WHERE id = 2) a
,(SELECT 0) b
) C
结果是空的
id=1的结果
会是
IF ( a is NULL, NULL, CONCAT(a,",",b))
1,0
非常感谢你的回答。我用以下方法解决了这个问题:
SELECT *
FROM (SELECT (SELECT COUNT(1) FROM table_x) AS counter,
id
FROM table_x
UNION ALL
SELECT (SELECT COUNT(1) FROM table_x) AS counter,
0 AS id) a
WHERE a.counter > 0
在您无法执行的查询中,这两个选项彼此都不知道。您可以将联合包装到子查询中,并在外部查询中过滤其结果。
SELECT *
FROM (SELECT (SELECT COUNT(1) FROM table_x) AS counter,
id
FROM table_x
UNION ALL
SELECT (SELECT COUNT(1) FROM table_x) AS counter,
0 AS id) a
WHERE a.counter > 0