COUNT行的SQL查询涉及SELECT特定行+ FROM + WHERE + AND

时间:2012-03-25 22:37:22

标签: mysql count

如何返回此查询返回的行数而不是查询结果:

SELECT collections.name, collections.description, collections.collection_id, collections.name, collections.description, collections.date, users.name
FROM users, collections
WHERE collections.user_id = users.user_id
AND (
collections.description LIKE  "%%searchTerm%%"
OR collections.name LIKE  "%%searchTerm%%"
OR users.name LIKE  "%%searchTerm%%"
)
AND (
reported = false
OR (
reviewed = true
AND approved = true
)
)

3 个答案:

答案 0 :(得分:0)

两种方式,你可以

SELECT count(*)
FROM...

将以实际数据为代价返回计数,或者您可以使用您用于查询数据库的任何语言的函数来检查有多少行。

答案 1 :(得分:0)

您可以使用count(1)或count(collections.collection_id)

SELECT 
    count(collections.collection_id)
FROM 
    users,
    collections
WHERE 
    collections.user_id = users.user_id
    AND (
            collections.description LIKE  "%%searchTerm%%"
            OR collections.name LIKE  "%%searchTerm%%"
            OR users.name LIKE  "%%searchTerm%%"
        )
    AND (
        reported = false
        OR (
            reviewed = true
            AND approved = true
        )
    )

答案 2 :(得分:0)

另请参阅FOUND_ROWS()以及SQL_CALC_FOUND_ROWS http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_found-rows

它可能比使用COUNT(*)执行一个查询以及另一个获取数据更好。

即可以运行一个查询来获得结果 - 同时获取计数。 (好吧,你仍然使用两个查询,但第二个是便宜的,它只是获取计算的总数)