我有如下所示的mysql数据库表结构:
quote_id parent_id
-----------------------
1 NULL
2 NULL
3 2
4 3
5 4
6 NULL
我想在结果中显示详细信息,如下所示。
quote_id parent_id
-----------------------
1 NULL
3 2
5 4
6 NULL
如何为此结果构建我的SQL查询? (我只想忽略重复的父ID,除了NULL值)
这是一个引用表,一旦编辑了报价,编辑的报价将更新报价表作为原始报价的子报价。
这里我想避免使用之前(编辑过的)引号,只显示结果中的最新内容。
感谢任何帮助。感谢。
答案 0 :(得分:2)
如何使用UNION
构建语句?上部查询获取quote_id
列表中没有parent_id
,而下部查询获取每quote_id
个最低parent_id
列表。
SELECT quote_id, parent_id
FROM TableName
WHERE parent_id IS NULL
UNION ALL
SELECT MIN(quote_id) AS quote_id, parent_id
FROM TableName
WHERE parent_id IS NOT NULL
GROUP BY parent_id
ORDER BY quote_id
不使用UNION ALL
SELECT MIN(quote_id) AS quote_id, parent_id
FROM TableName
GROUP BY IFNULL(parent_id, RAND())
ORDER BY quote_id