none
sql RRS feed

  • 问题

  • 现在有2个表 一个是price1表 一个是price2表,2个表都有code字段和price字段
    现在传入一堆code,查询方式是这样 先在price1表查询没存在记录的话则在price2表查询
    那怎么写该存储过程
    比如传入code为("1","3","5")
    那么假设price1表只有两条记录 code = 1 price = 56,code = 5, price = 50
    price2表只有两条记录 code = 3, price = 60. 和 code = 5,price = 70
    则查询出来的结果应该是
    code price
    1     56
    3     60
    5     50
    • 已移动 Raymond Tang 2010年3月31日 12:51 (发件人:.NET Framework 一般性问题讨论区)
    2010年3月31日 2:13

答案

  • 现在有2个表 一个是price1表 一个是price2表,2个表都有code字段和price字段
    现在传入一堆code,查询方式是这样 先在price1表查询没存在记录的话则在price2表查询
    那怎么写该存储过程
    比如传入code为("1","3","5")
    那么假设price1表只有两条记录 code = 1 price = 56,code = 5, price = 50
    price2表只有两条记录 code = 3, price = 60. 和 code = 5,price = 70
    则查询出来的结果应该是
    code price
    1     56
    3     60
    5     50

    把參數改為

     

    DECLARE @Code NVARCHAR(1000)
    SET @Code='1,3,5'
    
    SELECT code,price FROM price1 WHERE ','+@Code+',' LIKE '%,'+RTRIM(code)+',%'
    UNION ALL
    SELECT code,price FROM price2 a WHERE ','+@Code+',' LIKE '%,'+RTRIM(code)+',%'
    AND NOT EXISTS(SELECT * FROM price1 WHERE ','+@Code+',' LIKE '%,'+RTRIM(code)+',%' AND code=a.code)
    ORDER BY code


    ROY WU(吳熹)
    2010年4月6日 11:24
    版主

全部回复

  • 只看不回复!
    2010年4月6日 9:31
  • 现在有2个表 一个是price1表 一个是price2表,2个表都有code字段和price字段
    现在传入一堆code,查询方式是这样 先在price1表查询没存在记录的话则在price2表查询
    那怎么写该存储过程
    比如传入code为("1","3","5")
    那么假设price1表只有两条记录 code = 1 price = 56,code = 5, price = 50
    price2表只有两条记录 code = 3, price = 60. 和 code = 5,price = 70
    则查询出来的结果应该是
    code price
    1     56
    3     60
    5     50

    把參數改為

     

    DECLARE @Code NVARCHAR(1000)
    SET @Code='1,3,5'
    
    SELECT code,price FROM price1 WHERE ','+@Code+',' LIKE '%,'+RTRIM(code)+',%'
    UNION ALL
    SELECT code,price FROM price2 a WHERE ','+@Code+',' LIKE '%,'+RTRIM(code)+',%'
    AND NOT EXISTS(SELECT * FROM price1 WHERE ','+@Code+',' LIKE '%,'+RTRIM(code)+',%' AND code=a.code)
    ORDER BY code


    ROY WU(吳熹)
    2010年4月6日 11:24
    版主