首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以编写没有子选择的SQL查询?

问是否可以编写没有子选择的SQL查询?
EN

Stack Overflow用户
提问于 2011-01-17 14:30:16
回答 2查看 139关注 0票数 0

例如,想象一下一对多的关系:

代码语言:javascript
复制
Mail: subject, date etc 
Recipient: address

在不使用子选择:所有由abc@domain.com接收到的没有来自同一域@domain.com的收件人的邮件的情况下,可以执行这个查询@domain.com吗?

唯一能找到的方法是使用子选择:

代码语言:javascript
复制
select mail m, recipient r where m.pkm=r.pkm 
and (r.address='abc@domain.com')
and not exists (select * from mail ms, recipient rs where m.pkm=ms.pkm and ms.pkm=rs.pkm and rs.address<>'abc@domain.com' and rs.address like '%@domain.com') 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-17 14:35:45

代码语言:javascript
复制
select m.*, r1.* 
from mail m
inner join recipient r1 on m.pkm=r1.pkm
left join recipient r2 on m.pkm=r2.pkm and r2.address<>'abc@domain.com' and r2.address like '%@domain.com'
where r2.pkm is null
and r1.address='abc@domain.com'
票数 0
EN

Stack Overflow用户

发布于 2011-01-17 15:06:51

我不确定这是否比你的原版更好!--它仍然有一个子选择--但允许域名不是字面上的'domain.com‘。

代码语言:javascript
复制
SELECT m.*
FROM mail m
INNER JOIN 
(
    SELECT DISTINCT pkm
    FROM recipient
    GROUP BY pkm, SUBSTRING(email, CHARINDEX('@', email) + 1, 1000)
    HAVING COUNT(SUBSTRING(email, CHARINDEX('@', email) + 1, 1000))  = 1
) r
ON m.pkm = r.pkm

hth,R

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4714279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档