SQL Sybase查询奇怪的行为

时间:2012-09-18 15:55:54

标签: sql sybase

我在同一个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'
) 

对这将执行的位置有一个限制,这意味着它需要像第一个查询一样工作。

有没有人有任何想法为什么第一个可能按预期工作而第二个不会?

2 个答案:

答案 0 :(得分:0)

由于我还没有被允许发表评论,这里作为“有人......?”这个问题的答案:

没有。我找不到任何人:)。

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

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

答案 1 :(得分: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中使用相同的想法