3
我有這個疑問:MySQL的左連接與IF
SELECT r.*, d.rateName
FROM ratings r
LEFT JOIN rate_data d ON (r.rateID=d.rateID AND d.rateName != '')
ORDER BY r.rateTime DESC
這做工精細。現在我有第二個數據表。在一個查詢中進行更改以使用IF來實現此操作,還是進行兩個查詢併合並結果的唯一方法?
我試着告訴你我是什麼意思:
SELECT r.*, d.rateName
FROM ratings r
(IF r.isOther == 0)LEFT JOIN rate_data d ON (r.rateID=d.rateID AND d.rateName != '')
(ELSEIF r.isOther == 1)LEFT JOIN rate_data_other d ON (r.rateOtherID=d.rateOtherID AND d.rateName != '')
ORDER BY r.rateTime DESC
謝謝大家幫忙
只需使用工會:
SELECT * FROM ( \t (SELECT r.*, d.rateName \t FROM ratings r LEFT JOIN rate_data d ON (r.rateID=d.rateID AND d.rateName != '') WHERE r.isOther = 0) UNION ( SELECT r.*, d.rateName \t FROM ratings r \t LEFT JOIN rate_data_other d ON (r.rateOtherID=d.rateOtherID AND d.rateName != '') \t \t WHERE r.isOther = 1) \t \t) TMP ORDER BY TMP.rateTime DESC
–