2

假设我有这张桌子:

sett_tb_plant_trans

(pk)uidplanttrans  field1  stoptime
---------------------------------   
x                  1       1/1/2000
y                  1       null 
z                  2       1/1/2000
k                  2       1/1/2000
v                  3       null
j                  4       null

我想选择只是因为它们填充了所有行,z并且field1 具有相同的“键”。kstoptime

我做了这个查询:

 select 
   field1 from sett_tb_plant_trans 
 where uidplanttrans not in 
   (select uidplanttrans from sett_tb_plant_trans where stoptime is null)

但返回一些field1 有一些为stoptime空的行

为什么?

4

2 回答 2

2

您应该能够像这样简化查询:

select field1 from sett_tb_plant_trans where stoptime is not null

它绝对应该给出正确的结果。但是,在您的表中有相同值field1stoptimenull,例如,具有 PK 的行xy具有相同值1的行field1,但对于ystoptime 为空。

如果您只想要那些field1没有具有相同field1值的其他行的值stoptime,那么您可以使用子选择方法来完成,只是略有不同:

 select 
 field1 from sett_tb_plant_trans 
 where field1 not in 
 (select field1 from sett_tb_plant_trans where stoptime is null)

这将为您提供 2 行,因为对于带有 PKzk. 根据您的需要,您可能要选择distinct(field1) from ....

于 2013-06-07T15:46:54.483 回答
0

我对您为什么使用嵌套查询感到困惑。

不会

select field1 from sett_tb_plant_trans where stoptime is not null

工作?

于 2013-06-07T15:46:41.127 回答