今天又被 MySQL 搞了一次,到最後我終於知道了,
絕對絕對不要使用「保留字」作為欄位名稱,
就算會很乖的加上 `` 也一樣!
我不知道這是 MySQL 的 Bug 還是怎樣,
如果我單純做 SELECT 是正常的,
SELECT `month` FROM `table`;
但是當我要 WHERE 又要 ORDER BY 時
SELECT `month` WHERE `state`='1' AND `rank`='3' ORDER BY `rank`, `id`
明明該有資料符合的卻出不來!
如果只有單純的 WHERE 或 ORDER BY 又很正常!
更阿鬼的來了,如果我去 JOIN ,例如
SELECT `month` FROM `table` LEFT JOIN `table2`
ON `table2`.`id`=`table`.`table2_id`
WHERE `state`='1' AND `rank`='3' ORDER BY `table`.`rank`, `table`.`id`
又正確地丟出資料了!
繞了這麼一大圈,我只想說,
真的不要用「保留字」做為欄位名稱啊啊啊啊!
※ 引述《cleanwind (骨傲風清(掛網))》之銘言:
: `hwlist`
: id info type deadline filename rank hwid
: 1 1 0000-00-00 00:00:00 0 2
: 2 2 0000-00-00 00:00:00 0 2
: 3 3 0000-00-00 00:00:00 0 2
: 4 不要玩我 2010-03-15 00:00:00 0 1
: 5 囧爆了 2010-03-15 00:00:00 1 1
: 如果我下,
: SELECT `id` FROM `hwlist` WHERE `id`=4 OR `id`=5
: 會得到正常的結果
: id
: 4
: 5
: 但是我如果下
: SELECT `info`, `type`, `id` FROM `hwlist` WHERE `id`=4 OR `id`=5 ORDER BY
: `rank`
: 卻會得到
: info type id
: 囧爆了 5
: 囧爆了 5
: 誠心請教,是我的腦帶有洞,
: 還是 MySQL 6.0.4-alpha 的程式碼有 Bug ?
--
請協助連署 Steam 板,不管贊成或反對都很謝謝您!
戰略高手 遊戲, 數位, 程設
ComGame-Serv 組務 Σ戰略高手服務中心
ComGame-New 組務 ◎戰略高手群組連署專用看板
864 7/07 cleanwind ˇ [申請新板] Steam
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 120.101.9.24