【发布时间】:2014-02-06 01:19:15
【问题描述】:
在 MySQL 中,我有一个这样的表:
+-----------------------+
| Assets |
+-----------------------+
| Id | Name | RootId |
+----+---------+--------+
| 1 | Asset A | 1 |
+----+---------+--------+
| 2 | Asset B | 2 |
+----+---------+--------+
| 3 | Asset C | 3 |
+----+---------+--------+
| 4 | Asset D | 2 |
+----+---------+--------+
| 5 | Asset E | 3 |
+----+---------+--------+
| 6 | Asset F | 3 |
+----+---------+--------+
我知道,这不是最棒的表结构……但我现在坚持使用它。
我正在尝试编写一个查询,给定 Id 值,仅当恰好有两 (2) 行具有相同的 RootId 时才会返回 RootId 和 RootName。否则这些列应该为 NULL。
因此,使用上面的表格,如果给定一个为 4 的 Id,查询应该返回:
+----------------------------------+
| Assets |
+----------------------------------+
| Id | Name | RootId | RootName |
+----+---------+--------+----------+
| 4 | Asset D | 2 | AssetB |
+----+---------+--------+----------+
但如果给定任何其他 Id 值,例如 5,它应该返回:
+----------------------------------+
| Assets |
+----------------------------------+
| Id | Name | RootId | RootName |
+----+---------+--------+----------+
| 5 | Asset E | null | null |
+----+---------+--------+----------+
对此的任何帮助将不胜感激。我认为它需要一个带有 COUNT 和可能是 GROUP BY 的子查询,但我真的不确定如何表达它......
提前致谢!
【问题讨论】: