Sql 如何比较两个int列表,resultset?
我在查询的结果集中有两个整数列表,例如:list_1:11,16,28。。。清单2 11,16,19。。在我的Where条件下,如何比较这两个列表??条件是如果列表不同,则进行选择 代码如下:Sql 如何比较两个int列表,resultset?,sql,Sql,我在查询的结果集中有两个整数列表,例如:list_1:11,16,28。。。清单2 11,16,19。。在我的Where条件下,如何比较这两个列表??条件是如果列表不同,则进行选择 代码如下: SELECT cosechaAnterior.c_Fk_IdBoleta as 'BOLETA_P16', cosechaAnteriorDestino.c_Fk_IdBoleta as 'BOLETA_P17' FROM Clt_CosechaAnterior cosechaAnterior I
SELECT cosechaAnterior.c_Fk_IdBoleta as 'BOLETA_P16', cosechaAnteriorDestino.c_Fk_IdBoleta as 'BOLETA_P17'
FROM Clt_CosechaAnterior cosechaAnterior
INNER JOIN Clt_CosechaAnteriorDestino cosechaAnteriorDestino
ON cosechaAnterior.si_Fk_IdDesglose = cosechaAnteriorDestino.si_Fk_IdDesglose
INNER JOIN Blt_Boleta as boleta
ON cosechaAnterior.c_Fk_IdBoleta = boleta.c_Pk_IdBoleta
WHERE --boleta.c_Pk_IdBoleta = 44990112--@id_boleta
(select si_Fk_IdDesglose
from Clt_CosechaAnteriorDestino as cosechaAnteriorDestino
where SUBSTRING(cosechaAnteriorDestino.c_Fk_IdBoleta,5,4) = '0112'
AND cosechaAnteriorDestino.c_Fk_IdBoleta = 44990112) (select si_Fk_IdDesglose
from Clt_CosechaAnterior as cosechaAnterior
where SUBSTRING(cosechaAnterior.c_Fk_IdBoleta,5,4)= '0112'
AND cosechaAnterior.c_Fk_IdBoleta = 44990112)
你也许可以用。如果列表_1除列表_2之外的计数大于0,则您知道列表是不同的。您希望通过联接而不是在WHERE子句中执行此操作。从你的问题来看,有点不清楚这两个列表是什么。所以这个答案给出了一个普遍的解决方案 假设列表采用两列格式(,),其中的列表由多个值组成。然后,以下查询返回具有完全相同的值集的所有ID:
select list1.id
from (<subquery 1>) list1 full outer join
(<subquery 2>) list2
on list1.id = list2.id and
list1.val = list2.val
group by list1.id
having max(case when list1.id is null then 1 else 0 end) = 0 and
max(case when list2.id is null then 1 else 0 end) = 0
选择list1.id
from()列表1完全外部联接
()清单2
在list1.id=list2.id和
list1.val=list2.val
按列表1.id分组
最大值(当list1.id为空时,则为1,否则为0结束)=0,并且
最大值(list2.id为空时为1,否则为0结束)=0
(此公式假设值中没有重复。)
这是一个完整的外部连接,并且只选择连接两边都没有空值的ID。当元素不匹配时,在完全外部联接上生成空值。将每个列表视为文本blob,并使用函数测试两个文本值是否相等。语法如何?要比较这两个选项?(选择…)除了(选择…)如果仅在列表不同时选择,则可以执行以下操作。选择。。。其中((列表1选择)除了(列表2选择)>0)