遇到很多次了,一个in语句的写法

蔡袅 2013-05-29 11:21:31
表 T_PO_AdjustmentNORMTHeader列如下:
[ANH_ID],[ANH_NORMTFrom],[ANH_NORMTTo]


我想将[ANH_ID]等于某个值,得到的 [ANH_NORMTFrom],[ANH_NORMTTo]两列作为in条件,如何转化?

数据:
INSERT INTO [T_PO_AdjustmentNORMTHeader]
(
,[ANH_NORMTFrom]
,[ANH_NORMTTo]
VALUES(1,'GX-15C/B3','GX-15C/B4'),(2,'Z387-08-02/A0','Z387-08-02/A1')(3,'J62-01/A4','J62-01/A5')


比如这样
delete from tb where ANH_NORMT in ('GX-15C/B3','GX-15C/B4')

这个就是ANH_ID=1 的两列作为in值
...全文
168 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
习惯性蹭分 2013-05-29
  • 打赏
  • 举报
回复

select t1.* from t_po_adjustmentnormtheader t1 join t_po_adjustmentnormtheader t2
on t2.anh_id=1 or t1.anh_normtfrom=t2.anh_normtto
發糞塗牆 2013-05-29
  • 打赏
  • 举报
回复
他的这句话:我想将[ANH_ID]等于某个值,得到的 [ANH_NORMTFrom],[ANH_NORMTTo]两列作为in条件,如何转化? 我的理解是:select [ANH_NORMTFrom],[ANH_NORMTTo] from tb where [ANH_ID] 等于一个值 ,然后得出这个结果,然后在delete中in这两列,因为in不能用在1列以上,所以换exists
szm341 2013-05-29
  • 打赏
  • 举报
回复
引用 10 楼 DBA_Huangzj 的回复:
[quote=引用 9 楼 szm341 的回复:] [quote=引用 8 楼 DBA_Huangzj 的回复:] 还有其他问题吗?
有~~tb. [ANH_NORMTFrom]=a. [ANH_NORMTFrom] and tb.[ANH_NORMTTo]=a.[ANH_NORMTTo]这里貌似要用or哦~ 还有老大有空帮我看看我那关于dormant的提问呗[/quote]你那个我暂时没有太多知识储备,所以一直没回复手机给偷了,纠结郁闷中,两个列匹配用and[/quote] 那是你看错了吧,lz要用ANH_NORMT这个列去匹配另两个列值啊~ 好吧,咱俩一起节哀。。。
發糞塗牆 2013-05-29
  • 打赏
  • 举报
回复
引用 9 楼 szm341 的回复:
[quote=引用 8 楼 DBA_Huangzj 的回复:] 还有其他问题吗?
有~~tb. [ANH_NORMTFrom]=a. [ANH_NORMTFrom] and tb.[ANH_NORMTTo]=a.[ANH_NORMTTo]这里貌似要用or哦~ 还有老大有空帮我看看我那关于dormant的提问呗[/quote]你那个我暂时没有太多知识储备,所以一直没回复手机给偷了,纠结郁闷中,两个列匹配用and
szm341 2013-05-29
  • 打赏
  • 举报
回复
引用 8 楼 DBA_Huangzj 的回复:
还有其他问题吗?
有~~tb. [ANH_NORMTFrom]=a. [ANH_NORMTFrom] and tb.[ANH_NORMTTo]=a.[ANH_NORMTTo]这里貌似要用or哦~ 还有老大有空帮我看看我那关于dormant的提问呗
發糞塗牆 2013-05-29
  • 打赏
  • 举报
回复
引用 6 楼 xx_mm 的回复:
引用 2 楼 DBA_Huangzj 的回复:
delete from tb where exists (select 1 from T_PO_AdjustmentNORMTHeader a where tb. [ANH_NORMTFrom]=a. [ANH_NORMTFrom] and tb.[ANH_NORMTTo]=a.[ANH_NORMTTo] and a.[ANH_ID]=你需要的值)
这个貌似可以
还有其他问题吗?
快溜 2013-05-29
  • 打赏
  • 举报
回复
delete from tb where ANH_NORMT in(select ANH_NORMTFrom from T_PO_AdjustmentNORMTHeader where id=1 union all select ANH_NORMTTo from T_PO_AdjustmentNORMTHeader where id=1)
蔡袅 2013-05-29
  • 打赏
  • 举报
回复
引用 2 楼 DBA_Huangzj 的回复:
delete from tb where exists (select 1 from T_PO_AdjustmentNORMTHeader a where tb. [ANH_NORMTFrom]=a. [ANH_NORMTFrom] and tb.[ANH_NORMTTo]=a.[ANH_NORMTTo] and a.[ANH_ID]=你需要的值)
这个貌似可以
蔡袅 2013-05-29
  • 打赏
  • 举报
回复
引用 1 楼 szm341 的回复:

delete from tb where ANH_NORMT in 
(select [ANH_NORMTFrom] from tb where ANH_ID=1
union 
select [ANH_NORMTTo] from tb where ANH_ID=1
)
这样子嘛?有没神气一点的
xiaoqi7456 2013-05-29
  • 打赏
  • 举报
回复
你插入这列的时候写成 select ANH_ID from tb where ANH_NORMT in ('GX-15C/B3','GX-15C/B4')
蔡袅 2013-05-29
  • 打赏
  • 举报
回复
waiting for reply..
發糞塗牆 2013-05-29
  • 打赏
  • 举报
回复
delete from tb where exists (select 1 from T_PO_AdjustmentNORMTHeader a where tb. [ANH_NORMTFrom]=a. [ANH_NORMTFrom] and tb.[ANH_NORMTTo]=a.[ANH_NORMTTo] and a.[ANH_ID]=你需要的值)
szm341 2013-05-29
  • 打赏
  • 举报
回复

delete from tb where ANH_NORMT in 
(select [ANH_NORMTFrom] from tb where ANH_ID=1
union 
select [ANH_NORMTTo] from tb where ANH_ID=1
)

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧