我有以下查询(SQL SERVER
)
SELECT name, number, position, workingyears
FROM employee
WHERE type = 'A'
IF @@ROWCOUNT = 0
BEGIN
SELECT name, number, position, workingyears
FROM employee
WHERE type = 'B'
END
如果第一个选择的结果为空,那么我需要做其他选择,这些选择将具有相同的列但具有不同的过滤器。我怎么能只得到一张桌子呢。
答案 0 :(得分:2)
您可以检查type = 'A'
是否存在,然后使用第一个或第二个查询。
if exists(select 1 from employee WHERE type = 'A')
SELECT name, number, position, workingyears
FROM employee
WHERE type = 'A'
else
SELECT name, number, position, workingyears
FROM employee
WHERE type = 'B'
或在单个查询中。
SELECT name, number, position, workingyears
FROM employee
WHERE type = case when exists(select 1 from employee WHERE type = 'A') then 'A'
else 'B' end
答案 1 :(得分:2)
你可以试试这个:
SELECT name, number, position, workingyears
FROM employee
WHERE type = 'A'
UNION ALL
SELECT name, number, position, workingyears
FROM employee
WHERE (type = 'B' and NOT EXISTS(SELECT 1 FROM employee WHERE type = 'A'))