除了MySQL之外,其他任何事情都很簡單。如果條件執行查詢,否則執行其他查詢
基本上我需要根據特定術語返回的結果數來切換我正在使用的索引類型以及其他一些條件。
某事的效果:
IF (SELECT COUNT(*) FROM table WHERE term LIKE "term") > 4000
EXECUTE QUERY A
ELSE
EXECUTE QUERY B
這是可能在MySQL聲明?
編輯:
查詢:
SELECT id
FROM table_a
FORCE INDEX(id)
JOIN table_b ON table_a.id = table_b.id
WHERE term LIKE "term"
ORDER BY date
LIMIT 100;
查詢B:
SELECT id
FROM table_a
FORCE INDEX(term)
JOIN table_b ON table_a.id = table_b.id
WHERE term LIKE "term"
GROUP BY term # These lines would be included for a few conditions not mentioned above.. but are necessary
HAVING COUNT = 1 # same...
ORDER BY date
LIMIT 100;
的原因查詢開關是我得到一個基於顯着不同的結果倍「術語」的普及。
什麼是「QUERY A」和「QUERY B」? SQL通常允許使用創造性的WHERE條款處理這種情況,但除非我們知道A和B是否充分相關,否則我們不能說。 –
...否則,MySQL只允許在函數,觸發器和存儲過程中使用流控制邏輯 - 而不是定期查詢。 –
理論上 - 是的(藉助CASE語句和連接),但這取決於兩個查詢中的字段數和記錄數是否匹配。你應該將這兩篇文章和測試數據一起發佈,以便我們能夠回答。 –