gpt4 book ai didi

mysql - 同一个表中相关项的 SQL 查询

转载 作者:行者123 更新时间:2023-11-30 01:32:26 25 4
gpt4 key购买 nike

上一问题:SQL query of relationship between two items from the same table .

我希望能够将同一个表中的项目与连接表关联起来。与上面的问题类似,但我想知道是否可以查询彼此链接的表中的所有项目。

<强> SqlFiddle

entries
id
name
similars (join table connecting two entries)
one_id
two_id


car - train
\
bicycle - shopping cart

是否可以查询链接到“自行车”的所有项目并获得如下结果:

Entry   | Similar_to 
---------------------
Bicycle | Shopping cart
Bicycle | Car
Bicycle | Train

更新:

看来我需要递归来做到这一点,所以我从 mysql 转移到 postgresql。目前想知道如何使用连接表完成双向递归。以下是在链接列表上单向工作的表设置和查询:

CREATE TABLE entries 
(
id serial primary key,
name varchar(20)
);

INSERT INTO entries
(name)
VALUES
('Car'),
('Train'),
('Bicycle'),
('Shopping cart'),
('Node'),
('Skis'),
('Skates');

CREATE TABLE similars
(
one_id int,
two_id int
);

INSERT INTO similars
(one_id, two_id)
VALUES
(1, 2),
(1, 3),
(3, 4),
(6, 7);

查询,现在带有额外的 postgresql

WITH RECURSIVE temp AS
(
SELECT * FROM entries WHERE name = 'Bicycle'

UNION ALL

SELECT e.*
FROM entries AS e
LEFT JOIN similars AS s
ON e.id = s.two_id
JOIN temp l
ON s.one_id = l.id
)
SELECT * FROM temp;

这样我就得到了效果很好的结果,尽管仍然需要弄清楚如何获得其余的结果。

ID  NAME
3 Bicycle
4 Shopping cart

New SQLfiddle 。如果有人知道如何获得链接列表上两个方向的结果,那就太好了。

最佳答案

select e.name as "Entry",
es.name as "Similar_To"
from entries e
inner join similars s
on e.id = s.one_id
inner join entries es
on s.two_id = es.id

这就是你要找的吗?

关于mysql - 同一个表中相关项的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17305625/

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