code name
001 商品1
002 商品2
003 商品1
004 商品1
005 商品2我想在另一张表插入数据的时候判断这张表商品1的编码code字段是否存在,存在才能插入。
也就是只能插入与这张表对应的code,同一个商品名有不同编码,怎么弄?

解决方案 »

  1.   

    if exists(select 1 from (select code from 另一张表  a where exists(select 1 from 现有的表  b where a.code=b.code and a.name=b.name)))
     你的插入语句
      

  2.   


    --tableA,商品表
    --tableB,待插入的表
    insert into tableB(Code,fieldA,fieldB,fieldC)
    select Code,字段A对应的值,字段B对应的值,字段B对应的值
    from tableA where Code = '你的Code值'
    这样速度应该稍微快点。
      

  3.   


    SELECT * FROM 表2 WHERE CODE IN (SELECT CODE FROM 表 WHERE NAME = 商品码1)
    IF @@ROWCOUNT > 0
    插入的语句
      

  4.   

    商品1 对应的code编码有三个,有没有办法能循环遍历数据,然后和我要插入的编码进行判断呢?
      

  5.   


    insert into [另一张表]
    select [字段列表]
    from [数据表] a
    inner join [这张表] b
    on a.code=b.code and a.name=b.name
      

  6.   


    +1 啊,但出错了,插入001 可以,插入003 004 判断好像不行了。
    求救啊declare test_Cursor cursor scroll for
    select code from Item
    open test_Cursor
    declare @code varchar(255)
    while @@fetch_status=0
    begin
    fetch next from test_Cursor into @code
    if(@code!=@要插入的code) --这边的@code应该是一行行读取的code编码吧,判断不对啊
    begin
    select '编码错误'
    close test_Cursor
    deallocate test_Cursor
    return
    end
    else
    begin
    select '保存成功'
    end
    end
    close test_Cursor
    deallocate test_Cursor
      

  7.   

    a.name和b.name 都可能会重复,只有编码不重复。
      

  8.   

    可以使用存储过程:
    CREATE PROCEDURE [dbo].[Check] 
    @Code VARCHAR(10),
    @Name VARCHAR(50)
    AS
    BEGIN
    SET NOCOUNT ON;    IF EXISTS (
    SELECT TOP (1) *
    FROM dbo.Table1 WITH(NOLOCK)
    WHERE Code=@Code
    AND Name=@Name
      )
    BEGIN
    INSERT INTO dbo.Table2 VALUES()....
    END
    END
    GO
    你在插入数据的时候,根据code name两个字段进行判断。