如果存在,请选择使用where,否则不使用where

jdzmm42g  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(274)

我想从列='n'的表中进行选择。如果结果有0行,我想删除该条件。
一些伪sql可能是:

SELECT * FROM MY_TABLE
WHERE COL_A = 1 AND COL_B = 'mystring'
ELSE
    SELECT * FROM MY_TABLE
    WHERE COL_A = 1;

我将只在两个结果中使用第一行,因此也可以接受以某种方式对结果进行排序,使其中的行 COL_B = 'mystring' 出现在顶部。

lsmepo6l

lsmepo6l1#

如果没有太多的值 col_a 值,可以使用:

select t.*
from t
where col_a = 1
order by (case when col_b = 'mystring' then 1 else 2 end);

只需使用结果集中的第一行。

liwlm1x9

liwlm1x92#

假设这是mssql:

SELECT
    *
FROM
    MY_TABLE
CROSS JOIN
(
    SELECT
        COUNT(*) c
    FROM
        MY_TABLE
    WHERE
        COL_A = 1
    AND
        COL_B = 'mystring'
) MY_WHERE_COUNT
WHERE (
    MY_WHERE_COUNT.c > 0 AND MY_TABLE.COL_A = 1 AND MY_TABLE.COL_B = 'mystring'
)
OR (
    MY_WHERE_COUNT.c = 0 AND MY_TABLE.COL_A = 1
)

相关问题