我在同一个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'
)
对这将执行的位置有一个限制,这意味着它需要像第一个查询一样工作。
有没有人有任何想法为什么第一个可能按预期工作而第二个不会?
答案 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中使用相同的想法