Для запроса MySQL нужны результаты подзапроса в разных местах, например:
SELECT COUNT(*),(SELECT hash FROM sets WHERE ID=1)
FROM sets
WHERE hash=(SELECT hash FROM sets WHERE ID=1)
and XD=2;
Есть ли способ избежать двойного выполнения подзапроса (SELECT hash FROM sets WHERE ID=1)
?
Результат подзапроса всегда возвращает действительное значение хеш-функции.
Важно, чтобы результат основного запроса также включал HASH.
Сначала я попробовал JOIN
так:
SELECT COUNT(*), m.hash FROM sets s INNER JOIN sets AS m
WHERE s.hash=m.hash AND id=1 AND xd=2;
Если XD = 2 не соответствует строке, результат будет:
+----------+------+
| count(*) | HASH |
+----------+------+
| 0 | NULL |
+----------+------+
Вместо чего-то вроде (что мне нужно):
+----------+------+
| count(*) | HASH |
+----------+------+
| 0 | 8115e|
+----------+------+
Есть идеи? Пожалуйста, дайте мне знать! Заранее благодарю за любую помощь.
// Изменить:
наконец, этот запрос должен только подсчитать все записи в таблице, которая имеет такое же хеш-значение, как запись с ID = 1 и где XD = 2 Если ни одна строка не соответствует этому (в этом случае произошло бы, если XD установлен на другое число), верните 0 и просто хеш-значение.