0

私は2つのテーブルを持っています。最初の名前TABLEには一意の _A (KEY) を持つ N 行があり、2 番目の名前TABLE_AUXには 0 行があり、次のクエリを実行しています。

INSERT INTO TABLE_AUX(_A,_B,_C) 
SELECT A,B,C FROM TABLE;

クエリを評価した後、次のことがわかりました。

a) N = SELECT COUNT(1) FROM TABLE = SELECT COUNT(1) FROM TABLE_AUX

b) K = SELECT SUM(Q.CNT-1) 
       FROM ( SELECT COUNT(1) as CNT, _A 
              FROM TABLE_AUX GROUP BY _A HAVING COUNT(1)>1
       ) Q;

c) M = SELECT COUNT(Q._A) 
       FROM (SELECT DISTINCT _A 
             FROM TABLE_AUX) Q

, WHERE N = M + K, then M < N 

d) Zero = 0 = SELECT COUNT(1) 
              FROM TABLE T 
              WHERE NOT EXISTS ( SELECT * 
                                 FROM TABLE_AUX TA 
                                 WHERE TA._A = T._A );

e) P = SELECT COUNT(1) FROM TABLE T, TABLE_AUX TA WHERE T._A = TA._A;

, WHERE P = N + K, then N < P

奇妙なことに、場合によっては結果が繰り返されます。しかし、すべての場合ではありません。何が起こっているのか知っている人はいますか?

4

1 に答える 1

0

Select クエリで Distinct キーワードを使用します。

INSERT INTO TABLE_AUX(_A,_B,_C) 
SELECT DISTINCT A,B,C FROM TABLE;
于 2013-10-26T12:34:56.957 に答える