gpt4 book ai didi

mysql - SQL查询以查找ID在另一列中不存在的位置

转载 作者:行者123 更新时间:2023-12-01 00:36:14 26 4
gpt4 key购买 nike

我有一张表:Accounts

+-----------+-----------------+------+
| AccountNo | ParentAccountNo | name |
+-----------+-----------------+------+
| 1 | null | ABC |
| 2 | 1 | ABCD |
| 3 | 1 | CDE |
| 4 | 2 | DEF |
| 5 | null | GHI |
| 6 | 3 | MNO |
| 7 | 5 | JKL |
+-----------+-----------------+------+

我需要在 ParentAccountNo 中不存在 AccountNo 的情况下获取结果。

比如根据上面的数据,我期望的结果是:

+-----------+-----------------+------+
| AccountNo | ParentAccountNo | name |
+-----------+-----------------+------+
| 4 | 2 | DEF |
| 6 | 3 | MNO |
| 7 | 5 | JKL |
+-----------+-----------------+------+

将接受 MySQLSQL-Server 的答案。

最佳答案

通过在 AccountNo = ParentAccountNo 上使用 LEFT JOIN 将表连接到自身,然后您可以过滤掉存在的行没有匹配的 ID

WITH Accounts AS(
SELECT *
FROM (VALUES (1,null,'ABC'),
(2,1,'ABCD'),
(3,1,'CDE'),
(4,2,'DEF'),
(5,null,'GHI'),
(6,3,'MNO'),
(7,5,'JKL')) V(AccountNo,ParentAccountNo,name))


SELECT t1.*
FROM Accounts t1
LEFT JOIN Accounts t2 ON t1.AccountNo = t2.ParentAccountNo
WHERE t2.AccountNo IS NULL

enter image description here

[DEMO HERE]


你很好奇 WITH 的用法. . .

这相当于我对 WITH 的速记用法:

CREATE TABLE Accounts (
AccountNo INT NOT NULL,
ParentAccountNo INT NULL,
Name VARCHAR(200))

INSERT INTO Accounts
SELECT *
FROM (VALUES (1,null,'ABC'),
(2,1,'ABCD'),
(3,1,'CDE'),
(4,2,'DEF'),
(5,null,'GHI'),
(6,3,'MNO'),
(7,5,'JKL')) V(AccountNo,ParentAccountNo,name)

关于mysql - SQL查询以查找ID在另一列中不存在的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49312604/

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