gpt4 book ai didi

sql - 我想在子查询中返回多行

转载 作者:行者123 更新时间:2023-12-04 23:45:49 24 4
gpt4 key购买 nike

目的
进行查询,根据两个表查找缺失的组合。
例子
字母表

letter
======
a
b
c
d
e
姓名字母表
name    letter  
===== ======
chris a
chris b
chris d
james b
james d
预期结果
想要查找当前不存在的所有名称/字母组合
name    letter  
===== ======
chris c
chris e
james a
james c
james e
尝试了以下 SQL
select name, (select letter 
from letters where letter not in
(select letter from nameletter nl2 where nl2.name = nl.name))
from nameletter nl
但是得到了子查询返回超过 1 个值的错误消息。
SQL 重新创建我的表
create table letters (letter varchar(1))

insert into letters
values ('a'),('b'),('c'),('d'),('e')


create table nameletter (name varchar(max),letter varchar(1))


insert into nameletter values
('chris', 'a'),('chris', 'b'),('chris', 'd'),('james', 'b'),('james','d')

最佳答案

使用 cross join生成行,然后 left join (或 not innot exists )获取不匹配的:

select n.name, l.letter
from (select distinct name from nameletter) n cross join
letter l left join
nameletter nl
on nl.name = n.name and nl.letter = l.letter
where nl.name is null;

关于sql - 我想在子查询中返回多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51100291/

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