3

次のような 2 つの列を持つテーブルがあります。

source_cid     inchikey
----------     --------
 1             qqmn
 2             qqmn
 3             ccmm

同じインチキーを持つ source_cids を選択したい

これが私のクエリです:

SELECT source_cid, count(*) as c
FROM inchikey
GROUP BY inchikey HAVING count(*)>1

このコードは永久に実行されます。どうすれば変更できますか?

4

2 に答える 2

0

まず、アニゲルが述べたように、作成ステートメントを確認する必要があり、インデックスを使用する必要があります。

第 2 に、表示する必要があるすべての行がクエリに表示されません。

参照: http://www.sqlfiddle.com/#!2/a810d/7

SELECT source_cid, count(*) as c
FROM inchikey
GROUP BY inchikey HAVING count(*)>1;

残念ながら、source_cids 1 の行のみが出力されます。

select * from inchikey i,
(
SELECT i2.inchikey, count(i2.source_cid) as c
FROM inchikey i2
GROUP BY i2.inchikey HAVING count(i2.source_cid)>1
 ) as cd
where cd.inchikey = i.inchikey;

これで、1行と2行が出力されます。

于 2013-06-17T15:21:50.553 に答える