0

我的情况如下:

  • 我有一个连接表的长查询
  • 连接表中的所有列都包含一个列“名称”。在这个表中有两个名字'A'和'B'(但可以是C,D......Z,我不知道我们可以有多少个名字)并且它们都有多行,所以我有 n 行名称为 A 和 n 行名称为 B
  • 有时,根据用户输入,我需要加入整个表(包含所有名称),但只放置名称为“A”的某些条件(例如)。

所以 :

联合表 myTable(它将获取所有结果 A、B、C...)但如果 name = 'A' 然后 A.priority = A.userInput (对于 B、C... 在没有附加条件的情况下获取它们)

那么,是否有解决方案,或者我需要多次调用数据库?

谢谢。

4

1 回答 1

1

我会为此使用UNION ALL子句

SELECT *
  FROM TABLE1 T1
  JOIN TABLE2 T2
    ON T1.somecolumn = T2.somecolumn
  WHERE T2.name <> 'A'
UNION ALL
SELECT *
  FROM TABLE1 T1
  JOIN TABLE2 T2
    ON T1.somecolumn = T2.somecolumn
  WHERE T2.name = 'A' AND some condition
于 2020-11-20T15:03:20.973 回答