gpt4 book ai didi

mysql - SQL:选择在另一个表中不具有值的 ID/值组合

转载 作者:行者123 更新时间:2023-11-29 21:33:01 24 4
gpt4 key购买 nike

这基本上就是问题所在(我将其变成一个更普遍的问题,以防人们将来需要这样的东西)。

我有一张表(“People”),基本上就是这样的

╔══════════╦═══════╗
║ PersonID ║ Letter║
╠══════════╬═══════╣
║ 1 ║ A ║
║ 1 ║ B ║
║ 1 ║ C ║
║ 1 ║ D ║
║ 2 ║ A ║
║ 2 ║ B ║
║ 2 ║ C ║
║ 3 ║ B ║
║ 3 ║ C ║
║ 4 ║ A ║
║ 4 ║ C ║
║ 4 ║ D ║
║ 5 ║ E ║
╚══════════╩═══════╝

假设我有另一个表(“字母”),它可以列出一个人可以拥有的所有可能的“字母”。

╔══════════╦══════╗
║ LetterID ║ Text ║
╠══════════╬══════╣
║ 1 ║ A ║
║ 2 ║ B ║
║ 3 ║ C ║
║ 4 ║ D ║
║ 5 ║ E ║
╚══════════╩══════╝

我需要制作一个新表,其中列出所有人员以及他们没有的字母。因此对于这个例子,结果将是这样的

╔══════════╦══════════════╗
║ PersonID ║ LetterNotHad ║
╠══════════╬══════════════╣
║ 1 ║ E ║
║ 2 ║ D ║
║ 2 ║ E ║
║ 3 ║ A ║
║ 3 ║ D ║
║ 3 ║ E ║
║ 4 ║ B ║
║ 4 ║ E ║
║ 5 ║ A ║
║ 5 ║ B ║
║ 5 ║ C ║
║ 5 ║ D ║
╚══════════╩══════════════╝

非常感谢任何和所有帮助或指导。

编辑:这基本上就是我正在尝试的,类似这样

select p.PersonId, l.value
from letters l
left join people p
on l.Text = p.Letter
where p.personid is null

最佳答案

这是这个想法

WITH cte 
AS (SELECT *
FROM (SELECT DISTINCT personid
FROM people) B
CROSS JOIN (SELECT DISTINCT Text as letter
FROM letters) A)
SELECT *
FROM cte c
WHERE NOT EXISTS (SELECT 1
FROM first_table f
WHERE c.personid = f.personid
AND c.letter = f.letter)

注意:您需要在 People 表中使用 letterid 而不是 Letter 并定义一个 外键使表保持一致

关于mysql - SQL:选择在另一个表中不具有值的 ID/值组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35109631/

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