好吧,我有一个带有 id 的表,我需要检查 2 个条件是否适用。每个条件都是一组 where 子句。
例如,Table1 是我需要检查的。
第一个条件:
select t1.id
from table1 t1, table2 t2, table3 t3
where
condition1,
condition2,
condition3
第二个条件:
select t1.id
from table1 t1, table2 t2, table4 t4
where
condition1,
condition4,
condition5
现在我需要检查第一个条件或第二个条件是否适用于相同的 id 或两者。我被告知要使用 union 并在 select 语句中为每个条件添加一个静态值(对于第一个条件select t1.id, 1
和第二个条件的 ex select t1.id, 2
)但是当我尝试它时,每一行都单独返回相同的 table1 id。
这些表非常大并且包含数百万条记录,因此我需要在一个 sql 中执行此操作以获得更好的性能,另外我正在从 C 代码访问结果,因为我不确定返回的结果数量,所以我将有一个单独执行每个查询的性能真的很差,将每个查询的结果保存在一个数组中,并在每个数组上执行一个循环以检查哪个 id 两者或一个条件都适用,因为每个 id 的不同处理将根据适用于它的条件进行.
编辑 示例:
t1 ids: 1, 2, 3, 4
for id = 1, only condition 1 apply
for id = 2, only condition 2 apply
for id = 3, both conditions apply
for id = 4, no condition apply
我需要在结果中包含 1 个或 2 个随机静态标志:
id 1 2
-----------------
1 1
2 2
3 1 2
我知道这听起来很乱,我什至不确定是否可以做到
非常感谢 :)