用于select的SQL中的子查询
我想使用内部和外部select语句筛选我的游标中的记录。 我该如何做到这一点?用于select的SQL中的子查询
我只想要'_02'记录从这两个表。
table A:
col1
1122_01
1234_02
3456_02
7899_02
table B:
col1
1111_02
1234_02
4567_02
table Final:
col1
3456_02
7899_02
SELECT distinct a.col1
FROM A a
WHERE NOT EXISTS (SELECT 1 FROM B b
WHERE b.col1 = a.col1
and b.col1='02')
and a.col1='02'
这项工作?
或者这个?
SELECT distinct t.item, t.skuloc loc
FROM SCPOMGR.UDT_DFUTOSKUMAP t
, SCPOMGR.udt_gen_param G
WHERE NOT EXISTS (SELECT *
FROM SCPOMGR.SKU s1
, SCPOMGR.udt_gen_param G
,SCPOMGR.UDT_DFUTOSKUMAP t
WHERE s1.ITEM = t.ITEM
AND s1.LOC = t.SKULOC
and G.region='XYZ'
and G.jda_code= substr(s1.loc,-2,2)
)
and G.region='XYZ'
and G.jda_code= substr(T.SKUloc,-2,2)
它看起来像你想设置的
- 不同的
A.col1
- 值的这
B.col1
- 在
_02
结束同值不存在。
如果您将使用SQL工作,学习非常精确地指定您想要的内容至关重要。 SQL的核心是指定数据集的方案。在指定要用SQL实现的要求时,使用基本集合理论的概念。
一旦你有一个精确的规范,写入SQL通常很容易。如果你不能在SQL中表达你想要的东西,重新规范。
你的情况:
SELECT DISTINCT A.col1
FROM A
LEFT JOIN B ON A.col1 = B.col1
WHERE B.col1 IS NULL
AND A.col1 LIKE `%_02`
它使用LIKE '%suffix
的第三个要求,老LEFT JOIN ... IS NULL
伎俩第二个要求,并DISTINCT A.col1
为先。
此特定查询适用于各种SQL方言。游标与这种情况无关。
SELECT DISTINCT t.item,t.skuloc LOC FROM SCPOMGR.UDT_DFUTOSKUMAP吨, SCPOMGR.udt_gen_paramģ WHERE NOT EXISTS(SELECT * FROM SCPOMGR.SKU S1,SCPOMGR.udt_gen_param G,SCPOMGR.UDT_DFUTOSKUMAP吨 WHERE s1.ITEM = t.ITEM AND s1.LOC = t.SKULOC and G.region ='XYZ' and G.jda_code = substr(s1.loc,-2,2)) and G.region ='XYZ' 和G.jda_code = substr(T.SKUloc,-2,2) –
我不太确定您的评论代表什么。但是,出于性能方面的原因,我不推荐'WHERE NOT EXISTS'来代替'LEFT JOIN ... IS NULL'。 –
我不希望使用连接。我不能在这里使用子查询,情况如何? –
你的例子对我没有意义 –
光标?我看不到游标。 –
@ P.Salmon我在游标中使用 –