SQL - 考虑到 table 中的计数 (*),是否可以打印所有记录或仅打印一条记录?
SQL - Is it possible to print all records or only one record taking into account count(*) in a table?
我正在尝试寻找一种方法来打印结果,同时考虑 table 中是否存在记录。
如果是,我应该打印 table 中的所有记录,否则我应该只打印一条记录。
示例:
我有 Table 示例:
ColA
Colb
ColC
如果示例中的 select count(*) > 0 THEN Return
ColA
Colb
ColC
1
VA1
NULL
2
VB1
NULL
3
NULL
VA2
如果示例中的 select count(*) <= 0 THEN Return
ColA
Colb
ColC
Result
NA
NA
是否可以这样做?我正在使用 PRESTO 进行开发。
提前致谢
我们可以通过联合引入一个 dummy/default 行,然后仅在 Example
table 为空的情况下保留它:
WITH cte AS (
SELECT ColA, ColB, ColC, 0 AS pos FROM Example
UNION ALL
SELECT 'Result', 'NA, 'NA', 1
)
SELECT ColA, ColB, ColC
FROM cte
WHERE pos = 0 OR NOT EXISTS (SELECT 1 FROM cte WHERE pos = 0);
尝试:
SELECT ColA,ColB,ColC
FROM Example
union
SELECT
'Result' as ColA,
'NA' as ColB,
'NA' as ColC
WHERE NOT EXISTS (SELECT ColA,ColB,ColC
FROM Example)
不需要 select sub-query 中的 3 列,但目前我 copy/pasted 查询。可以用 SELECT 1
或 SELECT NULL
代替(这是个人喜好问题...)
我正在尝试寻找一种方法来打印结果,同时考虑 table 中是否存在记录。 如果是,我应该打印 table 中的所有记录,否则我应该只打印一条记录。
示例:
我有 Table 示例:
ColA | Colb | ColC |
---|
如果示例中的 select count(*) > 0 THEN Return
ColA | Colb | ColC |
---|---|---|
1 | VA1 | NULL |
2 | VB1 | NULL |
3 | NULL | VA2 |
如果示例中的 select count(*) <= 0 THEN Return
ColA | Colb | ColC |
---|---|---|
Result | NA | NA |
是否可以这样做?我正在使用 PRESTO 进行开发。
提前致谢
我们可以通过联合引入一个 dummy/default 行,然后仅在 Example
table 为空的情况下保留它:
WITH cte AS (
SELECT ColA, ColB, ColC, 0 AS pos FROM Example
UNION ALL
SELECT 'Result', 'NA, 'NA', 1
)
SELECT ColA, ColB, ColC
FROM cte
WHERE pos = 0 OR NOT EXISTS (SELECT 1 FROM cte WHERE pos = 0);
尝试:
SELECT ColA,ColB,ColC
FROM Example
union
SELECT
'Result' as ColA,
'NA' as ColB,
'NA' as ColC
WHERE NOT EXISTS (SELECT ColA,ColB,ColC
FROM Example)
不需要 select sub-query 中的 3 列,但目前我 copy/pasted 查询。可以用 SELECT 1
或 SELECT NULL
代替(这是个人喜好问题...)