如何仅在某些情况下应用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