sql >> データベース >  >> RDS >> Sqlserver

2つのセットを比較するTSQL

    使用:

    SELECT CASE 
             WHEN   COUNT(*) = (SELECT COUNT(*) FROM a) 
                AND COUNT(*) = (SELECT COUNT(*) FROM b) THEN 'Elements in TableA and TableB contains identical sets'
             ELSE 'TableA and TableB do NOT contain identical sets'
           END
      FROM (SELECT a.col
              FROM a
            INTERSECT
            SELECT b.col
              FROM b) x 
    

    テスト:

    WITH a AS (
      SELECT 'a' AS col
      UNION ALL
      SELECT 'b'
      UNION ALL
      SELECT 'c'
      UNION ALL
      SELECT 'd'),
         b AS (
      SELECT 'b' AS col
      UNION ALL
      SELECT 'c'
      UNION ALL
      SELECT 'd'
      UNION ALL
      SELECT 'a')
    SELECT CASE 
             WHEN   COUNT(*) = (SELECT COUNT(*) FROM a) 
                AND COUNT(*) = (SELECT COUNT(*) FROM b) THEN 'yes'
             ELSE 'no'
           END
      FROM (SELECT a.col
              FROM a
            INTERSECT
            SELECT b.col
              FROM b) x 
    


    1. テーブルから数えますが、特定の数で数えるのをやめます

    2. 高速アップサートSQLサーバー2008R2

    3. MySQLで日、月、年を返す

    4. Oracle WITH CLAUSEが機能していませんか?