2010-11-12 96 views

回答

1

一種方法是:

SELECT t1.ID, t1.Class 
FROM Table1 t1 
JOIN 
(
    SELECT Class, COUNT(*) AS NumberOf 
    FROM Table1 
    GROUP BY Class 
) x1 ON t1.Class = x1.Class 
JOIN 
(
    SELECT Class, COUNT(*) AS NumberOf 
    FROM Table2 
    GROUP BY Class 
) x2 ON x1.Class=x2.Class AND x1.NumberOf = x2.NumberOf 

編輯爲我本來誤解!我隨意剛剛返回從表1,其中一個給定類的數量兩個表中匹配

1
SELECT 
    tbl1.class 
FROM 
    (SELECT class, count(1) as cnt FROM table1 GROUP BY class) tbl1, 
JOIN (SELECT class, count(1) as cnt FROM table2 GROUP BY class) tbl2 ON tbl1.class=tbl2.class 

WHERE 
    tbl1.cnt=tbl2.cnt 

你不會得到的ID,因爲萬一有是B或C類的更多ID的ID,則數據庫引擎將不知道選擇哪一個。一旦你知道你需要什麼,你將不得不寫更復雜的查詢。

0

試試這個:

SELECT CLASS, ID 
    FROM TABLE1 
    WHERE CLASS IN 
    (SELECT CLASS FROM 
     (SELECT * FROM 
     (SELECT CLASS, COUNT(*) AS class_count 
      FROM table1 
      GROUP BY CLASS) T1 
     INNER JOIN 
     (SELECT CLASS, COUNT(*) AS class_count 
      FROM table2 
      GROUP BY CLASS) T2 
     USING (CLASS, CLASS_COUNT))); 

這從table1的ID和CLASS和工程提供的測試數據。不保證適用於所有可能的數據組合。使用風險自負。不適用於醫療設備,空中交通管制系統或其他涉及嚴重傷害,死亡或責任風險的應用。你的旅費可能會改變。 16歲以下兒童的使用應由負責任的成年人監測。不要在有強磁場,強風或青蛙或其他小型兩棲動物的情況下使用。不鼓勵在有大型兩棲動物或食肉爬行動物的情況下使用。沒有在動物身上測試過 - 你會成爲第一個!

分享和享受。