0
我收到以下查詢。MySQL「OR」導致錯誤「ORDER BY」
SELECT t1.parent_id
, t1.id
, t2.slug
FROM t1
LEFT
JOIN t2
ON t2.node_id = t1.id
WHERE t1.id
AND
(t1.parent_id = 501
OR t1.parent_id = 750
)
AND t2.display = 1
AND t2.active = 1
ORDER
BY t1.name ASC
似乎工作,但排序是錯誤的(我可能是錯的 - 不是排序)。它就像GROUP BY t1
。 parent_id
...
與此表:
--------------
name | parent_id
a | 501
b | 750
c | 501
d | 750
--------------
我得到這樣的結果:
a
c
b
d
但我希望這樣的:
a
b
c
d
感謝您的時間和幫助...
更新:
@Juan Carlos Oropeza謝謝。我在phpMyAdmin中運行代碼 - 結果相同。我改變到內連接和除去WHERE t1.id(未雖然傷害),並用於T1 .
parent_id` IN(501,750)代替:
mysql_query("
SELECT
`t1`.`parent_id`,
`t1`.`id`,
`t2`.`slug`
FROM
`t1`
INNER JOIN
`t2` ON `t2`.`node_id` = `t1`.`id`
WHERE
`t1`.`parent_id` IN (501, 750)
AND
`t2`.`display` = 1
AND
`t2`.`active` = 1
ORDER BY
`t1`.`lft`
ASC
");
相同的結果
沒有任何意義。試試'SELECT CHAR_LENGTH(t1.parent_id)'也許你在那裏有特殊的字符。試着在這裏重現樣本,所以我們看看http://sqlfiddle.com/#!15/037bc/1 –
你是什麼意思,你得到這個結果?複製你得到的確切結果! – sagi
順便說一句,這是一個內部聯接 – Strawberry