Подсчет строк из подзапроса - PullRequest
17 голосов
/ 18 марта 2011

Как можно посчитать строки из запроса SELECT в качестве значения?Например,

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

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

EDIT

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 ]

19 голосов
/ 18 марта 2011
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
7 голосов
/ 18 марта 2011

Можно сказать

SELECT COUNT(*) FROM anothertable

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

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

OR

SELECT someVariable, (SELECT COUNT(*) FROM anotherTable) as count FROM table
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...