好吧,我有一个带有 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
我知道这听起来很乱,我什至不确定是否可以做到
非常感谢 :)