我有一个返回团队列表的 SQL 函数。
我想用联合将一个附加列表加入到该列表中,但前提是第一个选择返回多于一行。
类似于:
CREATE FUNCTION Teams()
RETURNS TABLE
AS
RETURN
(
SELECT * FROM TABLE1
if @@rowcount>1
UNION
SELECT * FROM TABLE2
end if
)
最佳答案
不太漂亮,但应该可以:
CREATE FUNCTION Teams()
RETURNS TABLE
AS
RETURN
(
SELECT * FROM TABLE1
UNION
SELECT * FROM TABLE2 WHERE EXISTS (SELECT * FROM TABLE1)
)
如果第一个表中的选择很复杂,您可以将其放入 CTE 中:
CREATE FUNCTION Teams()
RETURNS TABLE
AS
RETURN
(
WITH Result AS
(
SELECT * FROM TABLE1 WHERE ComplicatedConditions = 1
)
SELECT * FROM Result
UNION
SELECT * FROM TABLE2 WHERE EXISTS (SELECT * FROM Result)
)
关于sql 行数条件并集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2902738/