Mysql 对子查询中的行进行计数
如何将SELECT查询中的行计数为值? 比如 因此,该计数是子查询从另一个表中选择*返回的行数的整数 编辑 我假设您的示例是实际查询的一个截断版本,所以您可能应该发布您想要的内容,以获得一个可能更优化的查询 编辑 直接从我的大脑工作,像这样的东西应该更为理想Mysql 对子查询中的行进行计数,mysql,sql,subquery,Mysql,Sql,Subquery,如何将SELECT查询中的行计数为值? 比如 因此,该计数是子查询从另一个表中选择*返回的行数的整数 编辑 我假设您的示例是实际查询的一个截断版本,所以您可能应该发布您想要的内容,以获得一个可能更优化的查询 编辑 直接从我的大脑工作,像这样的东西应该更为理想 SELECT p.PostPID, p.PostUID, p.PostText, p.PostTime, u.UserUID, u.UserName, u.UserImage, u.UserRep, COUNT(v.FlagTime) as
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
或
@Charlie-不确定是否出现错误,但在选择之前是否缺少逗号。。。作为PostFlags?@Charlie-我不确定v.FlagTime中的“v”是指什么,你没有任何标记为v的连接,f.FlagTime呢?@Charlie-一切都修复了?我更新了我的帖子。但是子查询似乎是在没有连接的情况下执行的。谢谢!第二个例子很有用,如果不是所有帖子都有标志,那么就排除那些没有标志的帖子。如果是这样的话,那么就从帖子中做左连接标志。。。
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