Подсчет строк из подзапроса

как я могу подсчитать строки из запроса SELECT в качестве значения? Такие как

SELECT FUCNTIONIMLOOKINGFOR(SELECT * FROM anothertable) AS count FROM table;

Так что count является целым числом, сколько строк подзапроса SELECT * FROM anothertable возвращает.

редактировать

SELECT p.PostPID, p.PostUID, p.PostText, p.PostTime, u.UserUID, u.UserName, u.UserImage, u.UserRep,
    (
        SELECT COUNT(f.FlagTime)
            FROM Flags as f 
                JOIN Posts as p 
                ON p.PostPID = f.FlagPID
    ) as PostFlags
    FROM Posts AS p
        JOIN Users AS u
        ON p.PostUID = u.UserUID
    ORDER BY PostTime DESC
    LIMIT 0, 30

2 ответов


SELECT ( SELECT COUNT(id) FROM aTable ) as count FROM table

Я предполагаю, что ваш пример-усеченная версия вашего фактического запроса, поэтому, возможно, вам следует опубликовать то, что вам нужно, чтобы получить, возможно, более оптимальный запрос.

редактировать

работаем напрямую от моего мозга, что-то вроде этого должно быть более оптимальным.

SELECT p.PostPID, p.PostUID, p.PostText, p.PostTime, u.UserUID, u.UserName, u.UserImage, u.UserRep, COUNT(v.FlagTime) as postFlags
    FROM Flags as f 
    JOIN Posts as p ON p.PostPID = f.FlagPID
    JOIN Users AS u ON p.PostUID = u.UserUID
LIMIT 0, 30
GROUP BY p.PostPID
ORDER BY PostTime DESC

вы можете сказать

SELECT COUNT(*) FROM anothertable

который возвращает числовое значение, которое можно использовать в другом запросе, например, в списке выбора другого запроса, или как условие другого запроса.

SELECT someVariable FROM table
WHERE (SELECT COUNT(*) FROM anotherTable) > 5

или

SELECT someVariable, (SELECT COUNT(*) FROM anotherTable) as count FROM table