我有两个查询从一个mysql数据库得到相关标签,一个工作,一个没有,我的问题是:“为什么?Mysql子选择问题
问题: 当执行第一个查询时,mysql服务器获得100%的CPU使用率,并且必须重新启动以再次运行。
查询1(不工作):
SELECT tags.*, COUNT(ct.company_id) AS count
FROM company2tag ct, tags
WHERE ct.company_id IN (
SELECT ct.company_id FROM company2tag ct
WHERE ct.tag_id = 18
GROUP BY ct.company_id
HAVING COUNT(ct.company_id) = 1
)
AND tags.id != 18
AND tags.id = ct.tag_id
GROUP BY ct.tag_id
ORDER BY count DESC
LIMIT 5;
查询2(作品):
SELECT tags.*, COUNT(ct.company_id) AS count
FROM company2tag ct, tags
WHERE ct.company_id IN (5864, 5870, 6140, 6221, 6268)
AND tags.id != 18
AND tags.id = ct.tag_id
GROUP BY ct.tag_id
ORDER BY count DESC
LIMIT 5;
我的理解上面的两个查询不完全一样,唯一的区别在于第一个查询通过子查询检索其“company_id”。
这是怎么发生的?
子查询又是如何进行的? – paxdiablo 2009-07-29 13:53:46
完美地工作,它返回company_id的列表。 – smoove 2009-07-29 13:54:44