web-dev-qa-db-fra.com

Comptage des lignes d'une sous-requête

Comment puis-je compter les lignes d'une requête SELECT en tant que valeur? Tel que

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

Donc, ce nombre est un entier de combien de lignes la sous-requête SELECT * FROM anothertable Retour.

MODIFIER

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
17
Shoe
SELECT ( SELECT COUNT(id) FROM aTable ) as count FROM table

Je suppose que votre exemple est une version tronquée de votre requête réelle, vous devriez donc peut-être publier ce que vous recherchez pour obtenir une requête, peut-être plus optimale.

MODIFIER

En travaillant directement depuis mon cerveau, quelque chose comme ça devrait être plus optimal.

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
19
Kevin Peno

Tu peux dire

SELECT COUNT(*) FROM anothertable

qui renverra une valeur numérique, que vous pouvez utiliser dans une autre requête, comme dans la liste de sélection d'une autre requête, ou comme condition dans une autre requête.

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

OR

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