2012-12-18 33 views
0

我想寫一個查詢,將:聯盟 - 同桌,不包括前面的結果的MySQL

  • 運行查詢,給我(x)的行數(上限4)
  • 如果查詢沒有給我4我的需要,運行第二個查詢限制4-(x)和第一個查詢
  • 排除IDS,它如同第二

我有這方面的一個第三個查詢:

(SELECT *, 1 as SORY_QUERY1 FROM xbamZ where state = 'Minnesota' and industry = 'Miscellaneous' and id != '229' limit 4) 
UNION 
(SELECT *, 2 FROM xbamZ where state = 'Minnesota' limit 2) 
UNION 
(SELECT *, 3 FROM xbamZ where industry = 'Miscellaneous' limit 1) 

我該怎麼做(或者是?)?我關門了嗎?此查詢給我重複

+0

請在格式化SQL。 –

回答

2

我認爲不需要聯合和三個select s。一個也會工作

SELECT a.* 
FROM 
(
SELECT xbamZ.*, 
CASE 
    WHEN state = 'Minnesota' and industry = 'Miscellaneous' and id != '229' THEN 1 
    WHEN state = 'Minnesota' THEN 2 
    WHEN industry = 'Miscellaneous' THEN 3 
END as rnk 
FROM xbamZ 
where state = 'Minnesota' or industry = 'Miscellaneous' 
)a 
ORDER BY rnk 
LIMIT 4; 
+0

優秀!這正是我正在尋找的。我會盡快接受。 – user82302124