Можно ли использовать вывод внутреннего запроса для ввода внешнего запроса, где Caluse?
Лайк
select ho from (select sourceaddress,count(sourceaddress) as
src,hour(eventtime) as ho
from default.fullandfinal
where sourceaddress='0.0.0.0' and eventtime between '2019-05-11 00:00:00' and
'2019-05-11 19:59:59'
group by sourceaddress,hour(eventtime) order by sourceaddress,ho) t where
src=28350;
вывод этого запроса 11, и я хочу использовать этот вывод в моем запросе NXT, который
select sourceaddress,destinationaddress,destinationport,name,count(*) as count
from fullandfinal
where eventtime like "11%" and sourceaddress='0.0.0.0'
group by sourceaddress,destinationaddress,destinationport,name
order by count desc limit 5;
я хочу написать один запрос для этого, это возможно?
1 ответ
Учитывая MySQL - да возможно. Вы должны использовать первый запрос как подзапрос во втором запросе. Структура запроса будет примерно такой:
SELECT *,
(SELECT ID FROM TABLE_1 WHERE ....) AS [From Other Query] -- In the selection part
FROM TABLE_2
WHERE TABLE_2.ID = (SELECT ID FROM TABLE_1 WHERE ....) -- In Where condition
Для обоих приведенных выше случаев вы должны убедиться, что ваш подзапрос возвращает одно единственное значение, подобное 11, которое вы упомянули.
Попробуй это-
SELECT sourceaddress,
destinationaddress,
destinationport,
[name],
COUNT(*) as [count]
FROM fullandfinal
WHERE
eventtime LIKE
(
SELECT ho FROM
(
SELECT sourceaddress,
COUNT(sourceaddress) AS src,
HOUR(eventtime) AS ho
FROM DEFAULT.fullandfinal
WHERE sourceaddress='0.0.0.0'
AND eventtime BETWEEN '2019-05-11 00:00:00' AND '2019-05-11 19:59:59'
GROUP BY sourceaddress,
HOUR(eventtime)
ORDER BY sourceaddress,ho
) t
WHERE src=28350
) + '%'
AND sourceaddress='0.0.0.0'
GROUP BY sourceaddress,destinationaddress,destinationport,name
ORDER BY COUNT(*) DESC
limit 5;