如何在mysql查询中忽略重复引号中的parent_id?

时间:2014-08-15 04:43:03

标签: mysql sql

我有如下所示的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值)

这是一个引用表,一旦编辑了报价,编辑的报价将更新报价表作为原始报价的子报价。

这里我想避免使用之前(编辑过的)引号,只显示结果中的最新内容。

感谢任何帮助。感谢。

1 个答案:

答案 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