Syntax error: parse error, when creating a regression test checking empty tables

Syntax error: parse error, when creating a regression test checking empty tables

我正在创建一个回归测试查询,该查询将检查 table 是否已填充。这是通过获取每个 table A、B、C 中的第一行来完成的,如果它的 id 存在,它将获得值 "Y"。如果不是则值 "N"。我创建了下面的代码来执行以下操作,但出现语法错误:解析错误。谁能告诉我怎么了?

SELECT 

Case
    When  EXISTS( A.Id) THEN 'Y'
    ELSE 'N'
END AS A_exist,

Case
    When  EXISTS( B.Id) THEN 'Y'
    ELSE 'N'
END AS B_exist,

Case
    When  EXISTS( C.Id) THEN 'Y'
    ELSE 'N'
END AS C_exist

FROM
(select top 1 * from Table_A) A
(select top 1 * from Table_B) B
(select top 1 * from Table_C) C

您使用sql服务器吗?这个有用吗?

SELECT 

Case
    When  EXISTS(select * from Table_A) THEN 'Y'
    ELSE 'N'
END AS A_exist,

Case
    When  EXISTS(select * from Table_B) THEN 'Y'
    ELSE 'N'
END AS B_exist,

Case
    When  EXISTS(select * from Table_C) THEN 'Y'
    ELSE 'N'
END AS C_exist

您可以使用以下查询。

SELECT 

Case
    When   A.Id IS NOT NULL THEN 'Y'
    ELSE 'N'
END AS A_exist,

Case
    When  B.Id IS NOT NULL THEN 'Y'
    ELSE 'N'
END AS B_exist,

Case
    When  C.Id IS NOT NULL THEN 'Y'
    ELSE 'N'
END AS C_exist

FROM
(select top 1 * from Table_A) A,
(select top 1 * from Table_B) B,
(select top 1 * from Table_C) C
;

您可以使用 COUNT:

为空的 table 强制一行
SELECT
   CASE WHEN a.CNT = 1 THEN 'Y' ELSE 'N' END AS A_exist,
   CASE WHEN b.CNT = 1 THEN 'Y' ELSE 'N' END AS B_exist,
   CASE WHEN c.CNT = 1 THEN 'Y' ELSE 'N' END AS C_exist
FROM
 (
   SELECT COUNT(*) AS CNT
   WHERE EXISTS(SELECT  * FROM Table_A) 
 ) AS a,
 (
   SELECT COUNT(*) AS CNT
   WHERE EXISTS(SELECT  * FROM Table_B) 
 ) AS b,
 (
   SELECT COUNT(*) AS CNT
   WHERE EXISTS(SELECT  * FROM Table_C)
 ) AS c;

但是为什么不 return 每行 table 而不是一列呢?扩展起来更容易:

SELECT 'Table_A' AS "Table", CASE WHEN COUNT(*) = 1 THEN 'Y' ELSE 'N' END AS "Exists?"
WHERE EXISTS(SELECT * FROM Table_A) 
UNION ALL
SELECT 'Table_B', CASE WHEN COUNT(*) = 1 THEN 'Y' ELSE 'N' END
WHERE EXISTS(SELECT * FROM Table_B) 
UNION ALL
SELECT 'Table_C', CASE WHEN COUNT(*) = 1 THEN 'Y' ELSE 'N' END
WHERE EXISTS(SELECT * FROM Table_C)