我有以下代码,运行良好:
select
M.value1, P.value2
from
table 1 P
join
table 2 E on (P.value2 = E.value2)
join
table 3 M on ( something else here)
where
P.value2 in (select value1
from table 4
where (value 2 = “aaa”) and (value 3 = “bbb))在这里,表1的列名为值2,我将其与表2连接,表2在指定的条件下也有名为value 2的列。然后,根据其他条件,将结果与表3连接起来。然后添加where运算符和in运算符,这将根据指定的条件从表4返回一些特定的value1值。因此,一些不需要的P.value2值将被跳过。
现在我的问题是:如果我有另一个表,比如表5,它有名为value1、值2和值3的列,如何进一步对P.value2值进行排序呢?我只想保留P.value2值,这些值只对应于某些标准。我试过这段代码,但没成功:
select
M.value1, P.value2
from
table 1 P
join
table 2 E on (P.value2 = E.value2)
join
table 3 M on ( something else here)
where
P.value2 in (select value1
from table 4
where (value2 = “aaa”) and (value3 = “bbb))
and P.value2 in (select value1
from table 5
where (P.value2 = value1) and (value3 = “ccc”))
or P.value2 in (select value2
from table 5
where (P.value2 = value2) and (value3 = “ccc”))这是使用where操作符的正确方法吗?我如何优化它?再一次,我想要实现的是增加这一点:
和P.value2 in (从表5中选择value1 (P.value2 = value1)和(value3 =“ccc”))或P.value2 (从表5中选择value2 (P.value2 = value2)和(value3 =“ccc”))
根据表5中的值获得所需的P.value 2值。谢谢您的帮助!
所以我们把表连在一起说:
value1 value2 value3 value1 value2 value1 value2
------ ------ ------ ------ ------ ------ ------
bbbbb1 aaaaa1 ccccc1 ddddd1 aaaaa1 eeeee1 fffff1
bbbb24 aaaa24 cccc24 dddd24 aaaa24 eeee24 ffff24
bbbb32 aaaa32 cccc32 dddd32 aaaa32 eeee32 ffff32
bbbb42 aaaa42 cccc42 dddd42 aaaa42 eeee42 ffff42
..... etc我们有所选的(排序)表:
value1 value2
------ ------
eeeee1 aaaaa1
eeee24 aaaa24
eeee32 aaaa32
...etc 现在,我想使用表5对这个表进行进一步的排序,我:
value1 value2 value3
------ ------ ------
12223 aaaa12 ccc
12334 aaaa32 bbb
aaaa1 123344 ccc
12332 aaaa24 ccc因此,这里应该保留aaaa1和aaaa24,并从最后一个表中移除aaaa32。
发布于 2014-01-04 21:46:00
变化
and P.value2 in (select value1 from table 5
where (P.value2 = value1) and (value3 = “ccc”))
or P.value2 in (select value2 from table 5
where (P.value2 = value2) and (value3 = “ccc”))至
and P.value2 in (select value1 from table 5
where (P.value2 = value1 OR P.value2 = value2) and (value3 = “ccc”))https://stackoverflow.com/questions/20926651
复制相似问题