表 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值

解决方案 »

  1.   


    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
    )
      

  2.   

    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]=你需要的值)
      

  3.   

    你插入这列的时候写成
    select ANH_ID  from tb where ANH_NORMT in ('GX-15C/B3','GX-15C/B4')
      

  4.   

    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)
      

  5.   

    有~~tb. [ANH_NORMTFrom]=a. [ANH_NORMTFrom] and tb.[ANH_NORMTTo]=a.[ANH_NORMTTo]这里貌似要用or哦~
    还有老大有空帮我看看我那关于dormant的提问呗
      

  6.   

    有~~tb. [ANH_NORMTFrom]=a. [ANH_NORMTFrom] and tb.[ANH_NORMTTo]=a.[ANH_NORMTTo]这里貌似要用or哦~
    还有老大有空帮我看看我那关于dormant的提问呗你那个我暂时没有太多知识储备,所以一直没回复手机给偷了,纠结郁闷中,两个列匹配用and
      

  7.   

    有~~tb. [ANH_NORMTFrom]=a. [ANH_NORMTFrom] and tb.[ANH_NORMTTo]=a.[ANH_NORMTTo]这里貌似要用or哦~
    还有老大有空帮我看看我那关于dormant的提问呗你那个我暂时没有太多知识储备,所以一直没回复手机给偷了,纠结郁闷中,两个列匹配用and
    那是你看错了吧,lz要用ANH_NORMT这个列去匹配另两个列值啊~
    好吧,咱俩一起节哀
      

  8.   

    他的这句话:我想将[ANH_ID]等于某个值,得到的 [ANH_NORMTFrom],[ANH_NORMTTo]两列作为in条件,如何转化?
    我的理解是:select [ANH_NORMTFrom],[ANH_NORMTTo] from tb where [ANH_ID] 等于一个值 ,然后得出这个结果,然后在delete中in这两列,因为in不能用在1列以上,所以换exists
      

  9.   


    select t1.* from t_po_adjustmentnormtheader t1 join t_po_adjustmentnormtheader t2
    on t2.anh_id=1 or t1.anh_normtfrom=t2.anh_normtto