gpt4 book ai didi

mysql - 将第一个选择的值用于联合中的第二个选择?

转载 作者:行者123 更新时间:2023-11-29 01:39:54 25 4
gpt4 key购买 nike

假设我有下表,这是一个熟悉的例子。

+----------------------------------+
| TAGS |
+--------+-------------+-----------+
| tag_id | tag_name | parent_id |
+--------+-------------+-----------+
| 1 | programming | NULL |
| 2 | php | 1 |
| 3 | class | 2 |
| 4 | object | 2 |
| 5 | method | 3 |
+--------+-------------+-----------+

我正在尝试设计一个查询,它根据初始选择语句的值选择关联的 parent_idtag_name

像这样:

SELECT * FROM tags AS child
WHERE child.tag_name = 'object'
UNION
SELECT * FROM tags AS parent
WHERE parent.parent_id = child.parent_id

我需要能够从这两个查询中返回合并的行,这就是我使用 UNION 的原因。

预期的结果应该是:

+--------+-------------+-----------+
| tag_id | tag_name | parent_id |
+--------+-------------+-----------+
| 2 | php | 1 |
| 4 | object | 2 |
+--------+-------------+-----------+

我也认为 JOIN 可能会起作用,但我不能完全让它起作用。

最佳答案

试试这个:

SELECT tag_id, tag_name, parent_id  
FROM tags AS child
WHERE child.tag_name = 'object'
UNION
SELECT parent.tag_id, parent.tag_name, parent.parent_id
FROM tags AS parent
INNER JOIN tags AS child ON parent.tag_id = child.parent_id AND child.tag_name = 'object';

检查 SQL FIDDLE DEMO

输出

| TAG_ID | TAG_NAME | PARENT_ID |
|--------|----------|-----------|
| 4 | object | 2 |
| 2 | php | 1 |

关于mysql - 将第一个选择的值用于联合中的第二个选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27325603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com