2011-06-17 261 views
5

1查詢如何從另一個查詢結果MYSQL減去一個查詢結果

(SELECT a.cat_id, 
      a.cat_name, 
      a.cat_description, 
      b.subcat_name, 
      b.subcat_description 
    FROM trade_categories a 
LEFT JOIN trade_subcategories b ON a.cat_id = b.cat_id 
    WHERE a.cat_name LIKE '%catty%' 
     OR a.cat_description LIKE '%catty%') 
UNION 
    (SELECT c.cat_id, 
      d.cat_name, 
      d.cat_description, 
      c.subcat_name, 
      c.subcat_description 
    FROM trade_subcategories c 
LEFT JOIN trade_categories d ON c.cat_id = d.cat_id 
    WHERE c.subcat_name LIKE '%catty%' 
     OR c.subcat_description LIKE '%catty%') 

第二查詢:

SELECT x.cat_id, 
     x.cat_name, 
     x.cat_description, 
     y.subcat_name, 
     y.subcat_description 
FROM trade_categories x 
    JOIN trade_subcategories y ON x.cat_id = y.cat_id 
WHERE ( x.cat_name LIKE '%catty%' 
     OR x.cat_description LIKE '%catty%') 
    AND ( y.subcat_name NOT LIKE '%catty%' 
     OR y.subcat_description NOT LIKE '%catty%') 

我要減去1查詢結果中的第2個查詢結果。

+2

Query1 MINUS Query2 – 2011-06-17 00:59:57

+0

我試過了,但是顯示了sytax錯誤 – merlin 2011-06-17 01:03:47

+0

(1query)MINUS(第2個查詢) – merlin 2011-06-17 01:04:15

回答

11

http://www.bitbybit.dk/carsten/blog/?p=71

或 例如:

SELECT Name FROM employee1 WHERE name NOT IN (SELECT name FROM employee2); 
+1

當點擊該鏈接時,我得到一個403禁止... 您沒有權限訪問此服務器上的/carsten/blog/index.php。 此外,嘗試訪問時出現403 Forbidden錯誤使用ErrorDocument來處理請求 – JzInqXc9Dg 2016-06-29 20:54:53

1

我認爲你可以做一個NOT IN或LEFT JOIN。我更喜歡LEFT JOIN。

因此,例如,

SELECT `QUERY_ONE`.* 
FROM `QUERY_ONE` 
LEFT JOIN `QUERY_TWO` USING (`cat_id`) 
WHERE QUERY_TWO.cat_id IS NULL; 

其中QUERY_ONE和QUERY_TWO是你的兩個查詢

+0

我會試試這個,謝謝你的回答 – merlin 2011-06-17 23:02:17

+0

沒有將數據存儲在單獨的表中......它有任何其他的解決方案... ...應該應用一些條件或東西來鏈接這些2查詢? – merlin 2011-06-17 23:08:12

0
SELECT a.cat_id, 
      a.cat_name, 
      a.cat_description, 
      b.subcat_name, 
      b.subcat_description 
    FROM trade_categories a 
LEFT JOIN trade_subcategories b ON a.cat_id = b.cat_id 
    WHERE a.cat_name NOT LIKE '%catty%' 
     AND a.cat_description NOT LIKE '%catty%' 
     AND (b.cat_id IS NULL 
     OR b.subcat_name NOT LIKE '%catty%' AND b.subcat_description NOT LIKE '%catty%') 

或別名,如果兩個查詢的結果已經被存儲在(臨時)表,你可以使用@Abhay的解決方案。

+0

okk謝謝..我試試... – merlin 2011-06-17 23:05:00

相關問題