0

我在同一个 Sybase 数据库中有 2 个结构完全相同的表,但它们是单独的表。

此查询适用于以下两个之一:

select * from table1 where 
QUOTA_FIELD >
(SELECT 
 count(ACCOUNT) FROM 
 table1 As t1
where SECTOR = t1.SECTOR
AND 
STATUS = 'QUOTA'
) 

但是对于第二张表,我必须将其更改为:

select * from table2 as tref where 
QUOTA_FIELD >
(SELECT 
 count(ACCOUNT) FROM 
 table2 As t2
where tref.SECTOR = t2.SECTOR
AND 
STATUS = 'QUOTA'
) 

这将在哪里执行是有限制的,这意味着它需要像第一个查询一样工作。

有没有人知道为什么第一个可能会按预期工作而第二个不会?

4

2 回答 2

0

由于我还不能发表评论,这里作为对“有人......?”这个问题的回答:

不,我找不到任何人 :)

第一个查询无法正常工作,因为它会将列与自身进行比较(只要列名都是普通的 ASCII 字符而不是一些看起来相似的 UNICODE 字符)。请证明此查询的结果在每种情况下都与查询 2 的结果相同。

此外,第二个查询通常会这样完成:where SECTOR = tref.SECTOR...

于 2012-11-28T14:35:58.597 回答
0

您可能正在查询 #1 中寻找类似的内容:

select * from table1 t2 where 
QUOTA_FIELD >
(SELECT 
 count(ACCOUNT) FROM 
 table1 As t1
where t2.SECTOR = t1.SECTOR          
AND 
t1.STATUS = 'QUOTA'
) 

这明确指定子查询中的表正在与外部查询中的表(共同相关子查询)连接。

如果可行,请在查询 #2 中使用相同的想法

于 2017-02-16T20:14:33.893 回答