我想請求幫助,因爲我無法在MySQL
中執行SELECT
聲明。MySQL - SELECT直到固定行數
SELECT
應該返回350行,只要第一行根據特定條件填充並且如果剩餘空間,剩下的空間就會充滿另一個條件。
我想請求幫助,因爲我無法在MySQL
中執行SELECT
聲明。MySQL - SELECT直到固定行數
SELECT
應該返回350行,只要第一行根據特定條件填充並且如果剩餘空間,剩下的空間就會充滿另一個條件。
在ORDER BY子句和LIMIT子句中使用表達式。
例如:
SELECT ...
FROM mytable t
ORDER
BY IF((t.foo >= 117 AND t.bar IN (2,3,5)),0,1)
, IF((t.foo >= 0 ),0,1)
, IF((t.bar = 42 ),0,1)
, ...
LIMIT 350
行滿足條件t.foo >= 117 AND t.bar IN (2,3,5)
將首先排序。 (因爲ORDER BY將根據表達式的返回值進行操作,將評估該條件,並且IF函數將返回0或1. ORDER BY子句中的後續表達式將以相同的方式進行評估。
LIMIT子句將限制行數返回,但不保證該查詢將不會返回例如少行如果MYTABLE包含少於350行。
嗨斯賓塞!感謝您的幫助!那正是我需要的。 –
更符合ANSI標準的將使用CASE表達式來代替MySQL特定的IF()函數。 '當t.foo> = 117時,按順序排序然後0否則1結束' – spencer7593
你的意思是這樣的:
SELECT column(s) FROM TABLE WHERE column = 42 LIMIT 350
還是你想的第一行,其中「一欄= 42」,然後閱讀350線?
請注意,沒有ORDER BY的LIMIT是相當無意義的。 – Strawberry
大衛你好!感謝您的幫助!但我正在尋找下面的答案。 –
你限制返回的行數與LIMIT
你用ORDER BY
來說你喜歡哪一排
假設你正在尋找re其中col ='best'的繩索,但如果沒有足夠的(即, 350)你也想與COL =「好」行:
select *
from mytable
where col in ('best', 'okay')
order by case when col = 'best' then 1 else 2 end
limit 350;
嗨Thorsten!感謝您的幫助!但我正在尋找上面的答案。 –
好吧,實際上spencer7593和我給了你相同的答案:使用帶有條件的'ORDER BY'子句來實現你想要的。 'IF'只是MySQL,'CASE'是標準的SQL。 –
請你後你有什麼權利現在 – victor
我建議你先更改的要求,比方說,12行,而不是350,然後請參閱http ://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-query。 – Strawberry