c*****d 发帖数: 6045 | 1 有3个表a,b,c
a表中的数据很多,可以分为a1和a2两个部分
现在的语句是
select *
from a,b
where a1
union all
select *
from a,c
where a2
有没有一个方法可以用一个select来实现 |
s**********o 发帖数: 14359 | 2 如果能UNION起来,B和C肯定是一样的COLUMNS吧 |
c*****d 发帖数: 6045 | 3 b和c表中column不一样多,当然在select后面选取的column是一样多的
类似
select a.col1, a.col2, b.col3
union
select a.col1, a.col2, c.col5
【在 s**********o 的大作中提到】 : 如果能UNION起来,B和C肯定是一样的COLUMNS吧
|
s**********o 发帖数: 14359 | 4 那就是先UNION后UNION的DIFFERENCE
【在 c*****d 的大作中提到】 : b和c表中column不一样多,当然在select后面选取的column是一样多的 : 类似 : select a.col1, a.col2, b.col3 : union : select a.col1, a.col2, c.col5
|
B*****g 发帖数: 34098 | 5 具体说说where是啥?
【在 c*****d 的大作中提到】 : 有3个表a,b,c : a表中的数据很多,可以分为a1和a2两个部分 : 现在的语句是 : select * : from a,b : where a1 : union all : select * : from a,c : where a2
|
y****w 发帖数: 3747 | 6 看你a1/a2条件怎么定义的,可能union all就已经是最好了。 硬凑成三个表join又没
有好处不一定,表面上是少一遍scan,还是看你条件。
select case when a1 then b.c3 when a2 then c.c5 end
from a,b,c
where a1 or a2
【在 c*****d 的大作中提到】 : 有3个表a,b,c : a表中的数据很多,可以分为a1和a2两个部分 : 现在的语句是 : select * : from a,b : where a1 : union all : select * : from a,c : where a2
|
c*****d 发帖数: 6045 | 7 select a.col1, a.col2, b.col3
from a,b
where a.col1 = b.col1
and a.col2 = a1
union all
select a.col1, a.col2, c.col5
from a,c
where a.col1 = c.col1
and a.col2 <> a1 |
B*****g 发帖数: 34098 | 8 bc有多大?
【在 c*****d 的大作中提到】 : select a.col1, a.col2, b.col3 : from a,b : where a.col1 = b.col1 : and a.col2 = a1 : union all : select a.col1, a.col2, c.col5 : from a,c : where a.col1 = c.col1 : and a.col2 <> a1
|
y****w 发帖数: 3747 | 9 你还得回答: a1和a2会不会有交集。
【在 c*****d 的大作中提到】 : 有3个表a,b,c : a表中的数据很多,可以分为a1和a2两个部分 : 现在的语句是 : select * : from a,b : where a1 : union all : select * : from a,c : where a2
|
c*****d 发帖数: 6045 | 10 绝对没交集
【在 y****w 的大作中提到】 : 你还得回答: a1和a2会不会有交集。
|
c*****d 发帖数: 6045 | 11 b挺大,c很小
【在 B*****g 的大作中提到】 : bc有多大?
|
y****w 发帖数: 3747 | 12 那怎么写都关系不大。如果你有合适索引的话。
【在 c*****d 的大作中提到】 : b挺大,c很小
|
B*****g 发帖数: 34098 | 13 基本够强有其他办法
【在 y****w 的大作中提到】 : 那怎么写都关系不大。如果你有合适索引的话。
|