我有如下表结构:
id |parent|name |value
1 | 0 | aaa |
2 | 0 | bbb |
3 | 0 | ccc |
4 | 1 | | 111
5 | 1 | | 222
6 | 3 | | 333
如果父记录有子记录,我想显示父记录。
Like:
(父代 ID + 名称 + 第一个子代的值)
1 - aaa - 111
3 - ccc - 333
数据库中第一个孩子没有任何意义,可以通过最小的值来获取第一个孩子id
或值的最小值,但这些值在表中没有按特定顺序存储,因此您无法判断哪个值是第一个值。
但是,假设id
是自增列,则第一个子列的值是最小值id
,那么你可以这样做:
SELECT
t1.parent,
t2.name,
t1.value
FROM tablename AS t1
INNER JOIN
(
SELECT MIN(id) AS id, parent
FROM tablename
GROUP BY parent
) AS t22 ON t22.id = t1.id AND t1.parent = t22.parent
INNER JOIN tablename AS t2 ON t1.parent = t2.id;
在这里查看它的实际效果:
- SQL 小提琴演示 http://sqlfiddle.com/#!2/834637/11
这会给你:
| PARENT | NAME | VALUE |
-------------------------
| 1 | aaa | 111 |
| 3 | ccc | 333 |
Or:你可以通过最小值得到它:
SELECT
t1.parent,
t2.name,
MIN(t1.value) AS value
FROM tablename AS t1
INNER JOIN tablename AS t2 ON t1.parent = t2.id
GROUP BY t1.parent, t2.name;
看看它的实际效果:
- SQL 小提琴演示 http://sqlfiddle.com/#!2/834637/2
这会给你:
| PARENT | NAME | VALUE |
-------------------------
| 1 | aaa | 111 |
| 3 | ccc | 333 |
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)