0

次のようなクエリを作成しようとしています。

  • クエリを実行して、(x) 行数を教えてください (制限 4)
  • そのクエリで必要な 4 が得られなかった場合は、2 番目のクエリ制限 4-(x) を実行し、最初のクエリから ID を除外します
  • 2 番目のクエリのように機能する 3 番目のクエリ

私はこれを持っています:

(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)

どうやって(または?)それを行うのですか?私は近いですか?このクエリは私に重複を与えます

4

1 に答える 1

2

ユニオンとスリーエスは必要ないと思いますselect。1つでも機能します

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;
于 2012-12-18T23:07:22.417 に答える