我一直在尝试从同一表中获取记录,具体取决于child和parent的parent_id概念。额外的一列是定义排序顺序的序列。
我的资料是
Sr.No | Name | parent_id | Sequence
1. | Customer | 0 | 0
2. | orders | 0 | 5
3. | General | 0 | 10
4. | All | 1 | 0
5. | Purchased | 1 | 5
6. | Non-Purch | 1 | 10
7. | Pending | 2 | 0
8. | Change Pass | 3 | 0
9. | Logout | 3 | 5
我想在一次执行中提取数据。虽然我不能使用外部连接,因为它不受mysql支持。
我尝试过的SQL是..
SELECT b.* FROM soi_admin_menu a RIGHT JOIN soi_admin_menu b ON a.menu_id = b.parent_id WHERE 1=1 AND a.parent_id = 0 ORDER BY a.sequence, b.parent_id ASC
我想要按顺序排列这样的数据。
--Customer
--All
--Purchased
--Non-Purchased
--Orders
--Pending
--General
--Change Password
--Logout
与所有领域。我的数据库是MySQL
没有外部联接,联合或其他假设,您将无法做到这一点。
如果可以假设Sequence和Sr.No对parent_id = 0的行给出相同的顺序,则可以尝试执行以下操作:
SELECT soi_admin_menu.*,
CASE
WHEN parent_id=0 THEN Sr.No * 10000
ELSE parent_id * 10000 + 1 + Sequence
END as my_order
FROM soi_admin_menu
ORDER BY my_order;
请注意,此解决方案为您提供了对Sequence,id和parent的限制(在这种情况下为10000)。要摆脱此限制,请使用字符串连接,并在根行的情况下按字符串时间列(其哈希值小于任何字符)进行排序。
没有外部联接,工会或其他假设,就无法说出哪个
6. | Non-Purch | 1 | 10
7. | Pending | 2 | 0
首先。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句