У меня есть два запроса, которые помогут получить связанных тегов из базы данных mysql, один работает, в моей нет, мой вопрос: «почему?»Mysql Sub-Select Problem
Проблема: При выполнении первого запроса, сервер MySQL получает 100% использование центрального процессора, и должен быть перезапущен, чтобы работать снова.
запроса 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
работает отлично, он возвращает список company_id. – smoove
Я не могу понять, как работает ваш второй запрос, потому что SQL недействителен. Все выбранные поля, которые не являются агрегатными функциями, должны присутствовать в списке GROUP BY (теги. * В вашем случае). – Tihauan