0

同じSybaseデータベースにまったく同じ構造のテーブルが2つありますが、それらは別々のテーブルです。

このクエリは、2つのいずれかで機能します。

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

しかし、2番目のテーブルでは、これを次のように変更する必要があります。

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

これが実行される場所には制限があります。つまり、最初のクエリと同じように機能する必要があります。

最初のものが期待どおりに機能し、2番目のものが機能しない理由について誰かが何か考えを持っていますか?

4

2 に答える 2

0

私はまだコメントを許可されていないので、ここで「誰か...?」という質問への回答として:

いいえ、誰も見つかりませんでした:)

この最初のクエリは、列をそれ自体と比較するため、正しく機能しません(列名がすべて通常のASCII文字であり、類似した外観のUNICODE文字ではない場合)。このクエリの結果がすべての場合でクエリ2の結果と同じであることを証明してください。

また、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'
) 

これは、サブクエリのテーブルが外部クエリのテーブルと結合していることを明示的に指定します ( co-related subquery )。

これが機能する場合は、クエリ #2 で同じアイデアを使用します

于 2017-02-16T20:14:33.893 に答える