gpt4 book ai didi

SQL 对一个表中的列进行配对

转载 作者:行者123 更新时间:2023-12-02 09:46:52 26 4
gpt4 key购买 nike

我需要通过他们所在的城市配对 2 个供应商名称。

<name supplier a> <name supplier b> <location>

我通过交叉连接一个供应商表获得了该表格 - 现在我需要确保它只有一个记录 - 所以要么在代码块顶部,要么:
 <name supplier b> <name supplier a> <location>

例子:

Märzen AG |迈尔幼儿园 |乌尔姆

或者

迈尔幼儿园 | Märzen AG |乌尔姆

因此:我只需要上述结果之一。
目前,我从 Crossjoin 中获得了两条记录:
 SELECT le.Liefname, le.liefstadt, li.Liefname
FROM Lieferanten le CROSS JOIN Lieferanten li
WHERE le.Liefstadt not like ''
AND li.Liefstadt not like ''
AND le.liefstadt=li.liefstadt;

其中liefstadt 是配对它们的城市,liefname 是我需要输出的名称。

我想做的另一种方法是:
SELECT a.LiefName, b.LiefName, LiefStadt 
FROM Lieferanten a, Lieferanten b
WHERE a.LiefStadt = b.LiefStadt
AND a.LiefName <> b.LiefName;

这里的问题是结果中仍然存在重复项。

由于我不是母语人士,我希望我能说的足够让您理解我的问题。 (因此可能错过了一个已经存在的对我有帮助的话题)。

最佳答案

你只需要调整你的第一种方法:

SELECT le.Liefname, le.liefstadt, li.Liefname
FROM Lieferanten le CROSS JOIN Lieferanten li
WHERE le.Liefstadt not like ''
AND li.Liefstadt not like ''
AND le.liefstadt=li.liefstadt
AND le.Liefname < li.Liefname

我建议您将查询更改为使用联接,以便表之间的条件显而易见。
SELECT le.Liefname, le.liefstadt, li.Liefname
FROM Lieferanten le JOIN
Lieferanten li
on le.liefstadt=li.liefstadt and
le.Liefname < li.Liefname
WHERE le.Liefstadt not like '' and
li.Liefstadt not like ''

虽然不是必需的,但使用 on比较两个表中的字段的条件子句比将这些条件放在 where 中生成更具可读性和可维护性的查询。条款。

关于SQL 对一个表中的列进行配对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16123430/

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