none
【SQL】如何判断两张表中含有相同数据? RRS feed

  • 问题

  • 我的需求是这样的,如果Sk_NetRefer和Sk_PhoneRefer表其中一个表如果phone含有指定值,在程序中判断

    我是这样写的:

    sql="select count(*) from [Sk_NetRefer] A,[Sk_PhoneRefer] B where A.[phone]='"&phone&"' or B.[phone]='"&phone&"'"

    2010年5月5日 2:39

答案

  • 不是都存在而是其中一个存在
    CREATE PROCEDURE Check_Phone(
      @phone NVARCHAR(50)
    )
    IF EXISTS(SELECT 1 FROM [Sk_NetRefer] WHERE [phone]=@phone) OR EXISTS(SELECT 1 FROM [Sk_PhoneRefer] WHERE [phone]=@phone)
       SELECT 1
    ELSE
       SELECT 0
    GO
    
    --程序調用
    EXEC Check_Phone @phone='111'
    GO
    返回1存在,0不存在


    ROY WU(吳熹)
    2010年5月5日 5:06
    版主

全部回复

  • 兩個表是笛卡爾積,兩個表沒有字段關聯?
    ROY WU(吳熹)
    2010年5月5日 2:54
    版主
  • 兩個表是笛卡爾積,兩個表沒有字段關聯?
    ROY WU(吳熹 )
    两个表没有关系,只是有相同的字段phone,而我要判断这两个表中是否含有指定的值
    2010年5月5日 2:56
  • IF EXISTS(select 1
    from [Sk_NetRefer] A,
    [Sk_PhoneRefer] B
    where A.[phone]=B.[phone] AND A.[phone]='"&phone&"')
      SELECT N'都存在'
    ELSE IF EXISTS(SELECT 1 FROM [Sk_NetRefer] WHERE [phone]='"&phone&"') OR EXISTS(SELECT 1 FROM [Sk_PhoneRefer] WHERE [phone]='"&phone&"')
      SELECT N'其中一個表存在'
    ELSE
      SELECT N'都不存在''

    把以上可寫一個存儲過程判斷

     


    ROY WU(吳熹)
    2010年5月5日 3:01
    版主
  •  

    IF
     EXISTS
    (select
     1
    from
     [Sk_NetRefer] A,
    [Sk_PhoneRefer] B
    where
     A.[phone]=B.[phone] AND
     A.[phone]='"&phone&"'
    )
     SELECT
     N'都存在'
    
    ELSE
     IF
     EXISTS
    (SELECT
     1 FROM
     [Sk_NetRefer] WHERE
     [phone]='"&phone&"'
    ) OR
     EXISTS
    (SELECT
     1 FROM
     [Sk_PhoneRefer] WHERE
     [phone]='"&phone&"'
    )
     SELECT
     N'其中一個表存在'
    
    ELSE
    
     SELECT
     N'都不存在'
    '
    

     

    把以上可寫一個存儲過程判斷

     


    ROY WU(吳熹 )

    你好,这样写我就比较迷糊了,我执行使用一条SQL语句就行,如果你这样写的话,我用ASP如何判断呢?记录集rs不好判断啊?望给予帮助,谢谢!
    2010年5月5日 3:12
  • 我的需求是这样的,如果Sk_NetRefer和Sk_PhoneRefer表其中一个表如果phone含有指定值,在程序中判断

    我是这样写的:

    sql="select count(*) from [Sk_NetRefer] A,[Sk_PhoneRefer] B where A.[phone]='"&phone&"' or B.[phone]='"&phone&"'"


    都存在的话, 把条件中的 or 改成 and
    2010年5月5日 4:15
  • 不是都存在而是其中一个存在
    2010年5月5日 4:59
  • 不是都存在而是其中一个存在
    CREATE PROCEDURE Check_Phone(
      @phone NVARCHAR(50)
    )
    IF EXISTS(SELECT 1 FROM [Sk_NetRefer] WHERE [phone]=@phone) OR EXISTS(SELECT 1 FROM [Sk_PhoneRefer] WHERE [phone]=@phone)
       SELECT 1
    ELSE
       SELECT 0
    GO
    
    --程序調用
    EXEC Check_Phone @phone='111'
    GO
    返回1存在,0不存在


    ROY WU(吳熹)
    2010年5月5日 5:06
    版主
  • if exists(select 1 from(select phone from [Sk_NetRefer] union all select phone from [Sk_PhoneRefer]) t)
    print '存在'
    else
    print '不存在'

    学如逆水行舟,不进则退!
    2010年5月5日 15:49