我写了这个查询
SELECT K.ID, K.`TYPE`, K1.`TYPE`,
FROM table K
INNER JOIN table K1
ON K1.ID = K.ID
WHERE K1.`TYPE` = 'ISSN'
AND K.`TYPE` = 'ISBN'
它查找一个具有两个记录的对象ID,一个具有type = ISSN,另一个具有ISBN。
这些表非常大,此查询大约需要十分钟才能运行。是否有更快的替代方法来使用嵌套选择(在同一个表上)或通过语法
组谢谢
答案 0 :(得分:1)
这很可能会比COUNT(DISTINCT ...)
SELECT K.ID
FROM table K
WHERE K.`TYPE` IN ('ISSN', 'ISBN')
GROUP BY K.ID
HAVING min(K.`TYPE`) <> max(K.`TYPE`)
答案 1 :(得分:0)
GROUP BY
版本:
SELECT K.ID
FROM table K
WHERE K.`TYPE` IN ('ISSN', 'ISBN')
GROUP BY K.ID
HAVING COUNT(DISTINCT K.`TYPE`) = 2
如果ID只能包含不同的类型值,则可以改为HAVING COUNT(K.
TYPE ) = 2
。