我在MySQL中有一个包含列dataid的表。如果父项具有数据 abcd ,那么所有子项将具有 abcd .xyz xyz abcd 用于表示这是abcd的子项。
目前我正在撰写此查询。
SELECT comment
。ID
cid FROM comment
{条件} ORDER BY评论。commentDate
DESC LIMIT 500
稍后我通过运行(all ids)中的dataid查询来获取孩子。
在同一查询中是否有其他方法可以执行此操作。 MySQL支持CTE,但我在服务器上使用5.6。我怎么能在5.6 MySQL中做到这一点。
蒂姆指出我的情况是错误的,所以我有另一个想法来解决这个问题。同样的表也有parentid,这意味着我可以通过运行'where parentid = 5'来获得所有孩子
由于
答案 0 :(得分:0)
以下查询将按父级排序,后跟所有子级:
SELECT ID, dataid
FROM comment
WHERE ...
ORDER BY
SUBSTRING_INDEX(dataid, '.', 1), -- sort by group, e.g. abcd
INSTR(dataid, '.'), -- parents before children
SUBSTRING_INDEX(dataid, '.', -1); -- sort the children