我要做的是返回我查询(和有限)的结果以及表格中的项目总数。这是我到目前为止所拥有的。
SELECT id, name
FROM ??
WHERE
user_id = ?
LIMIT ? , ?;
SELECT COUNT(*) as total
FROM ??
WHERE
user_id = ?
;
这是两个SQL查询,我想知道如何将它组合成一个。我希望总数本身(如果可能的话),否则作为每行的附加列。或者也许我现在拥有的是最优化的解决方案。
答案 0 :(得分:3)
好吧,你可以使用子查询在每行中包含计数:
SELECT
id,
name,
(SELECT COUNT(*) FROM yourTable WHERE user_id = ?) total
FROM yourTable
WHERE
user_id = ?;
但是,从分离的关注点来看,这可能不是最佳做法。相反,更典型的是我希望在这里看到两个单独的查询。
答案 1 :(得分:2)
使用CROSS JOIN
SELECT
t1.id,
t1.[name],
t2.cnt
FROM
yourtable t1
CROSS JOIN
(
SELECT
COUNT(1) AS cnt
FROM
yourtable
WHERE
[user_id] = ?
) t2
WHERE
t1.[user_id] = ?
LIMIT
?, ?
答案 2 :(得分:2)