从子查询计数行

Sho*_*hoe 17 mysql sql subquery

我怎样才能将SELECT查询中的行计为值?如

SELECT FUCNTIONIMLOOKINGFOR(SELECT * FROM anothertable) AS count FROM table;
Run Code Online (Sandbox Code Playgroud)

因此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
Run Code Online (Sandbox Code Playgroud)

Kev*_*eno 19

SELECT ( SELECT COUNT(id) FROM aTable ) as count FROM table
Run Code Online (Sandbox Code Playgroud)

我假设你的例子是你的实际查询的截断版本,所以也许你应该发布你想要的,可能是更优化的查询.

编辑

直接从我的大脑工作,这样的事情应该更加优化.

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
Run Code Online (Sandbox Code Playgroud)

  • 如果不是所有帖子都有标记,那么将排除那些没有标记的标记.如果是这种情况,那么`从帖子左边加入Flags ......` (2认同)

Bre*_*ett 7

你可以说

SELECT COUNT(*) FROM anothertable
Run Code Online (Sandbox Code Playgroud)

它将返回一个数值,您可以在另一个查询中使用该值,例如在另一个查询的选择列表中,或作为另一个查询中的条件.

SELECT someVariable FROM table
WHERE (SELECT COUNT(*) FROM anotherTable) > 5
Run Code Online (Sandbox Code Playgroud)

要么

SELECT someVariable, (SELECT COUNT(*) FROM anotherTable) as count FROM table
Run Code Online (Sandbox Code Playgroud)