sql 行数条件并集

标签 sql

我有一个返回团队列表的 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/

相关文章:

sql - 具有多个变量的 T-SQL SELECT

mysql - 从日期转换为日期

sql - SQL Server 中的重叠时间

mysql - 插入前创建 'search'触发器

sql - 在一列中显示所有表 SQL 的所有文本字段

sql - 使用此 SQL 语句检测到死锁?

mysql - 选择所有最大值 SQL 查询

sql - 临时表还是永久表?

sql - 有没有办法使用存储过程创建 Excel 文件?

sql - 优化 SQL 查询中的散列和散列连接