一个非常难得sql问题,除了union还有其他的什么办法?

[复制链接]
查看11 | 回复7 | 2011-2-18 11:43:34 | 显示全部楼层 |阅读模式
一个比较复杂的查询,类似
select * from a where a.sid in (复杂查询b)
问题出现这个这个地方,这个复杂查询b会返回10个子段,所以select * from a where a.sid in (复杂查询b)是无法执行的
现在有一个解决方案,就是把 复杂查询b用9个union来实现,这样的话,10个子段就成了一个字段,这样的话,系统可以跑,但是慢的不行,
能否有其他的方法
回复

使用道具 举报

千问 | 2011-2-18 11:43:34 | 显示全部楼层
2个问题
1、复杂查询再复杂,难道不能只取一个字段?你这个东西是放到in里的,取那么多字段有什么用
2、就算必须要取复杂查询里的10个字段,那把in改成连接查询呗,这有什么难的~~~
回复

使用道具 举报

千问 | 2011-2-18 11:43:34 | 显示全部楼层
类似的写下,发来看看,未必解决不了
回复

使用道具 举报

千问 | 2011-2-18 11:43:34 | 显示全部楼层
又在这里发了?
回复

使用道具 举报

千问 | 2011-2-18 11:43:34 | 显示全部楼层
原帖由 junsansi 于 2008-7-28 17:32 发表
2个问题
1、复杂查询再复杂,难道不能只取一个字段?你这个东西是放到in里的,取那么多字段有什么用
2、就算必须要取复杂查询里的10个字段,那把in改成连接查询呗,这有什么难的~~~


这个连接查询如何写?
第一次听说这个东西,给个例子如何?
回复

使用道具 举报

千问 | 2011-2-18 11:43:34 | 显示全部楼层
原帖由 kkngisn 于 2008-7-28 17:49 发表

这个连接查询如何写?
第一次听说这个东西,给个例子如何?

你的句子呢
回复

使用道具 举报

千问 | 2011-2-18 11:43:34 | 显示全部楼层
把你那个复杂子查询b贴出了就知道怎么做了~
回复

使用道具 举报

千问 | 2011-2-18 11:43:34 | 显示全部楼层
select * from a
where exists (select 1

from (select r1,r2,r3,...r10

from ...

) b-- 复杂查询b

where a.sid = b.r1 or a.sid = b.r2 or a.sid = b.r3 ... or a.sid = b.r10

)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行