1

我正在尝试从我的数据库中获取十行满足特定条件的数据。我试图让在数据库中注册的前十个用户参加课程,但我也想从数据库中获取参加课程的用户总数。我知道使用限制只返回十个用户,但是有什么办法可以避免进行两次查询,以便同时获得参加课程的用户总数。我当前的查询如下。

SELECT * FROM users, user_courses 
WHERE users.id = user_courses.user_id AND user_courses.CRN = '$CRN'
4

3 回答 3

1

您可以使用 UNION 语句。

SELECT users.id FROM users, user_courses 
WHERE users.id = user_courses.user_id AND user_courses.CRN = '$CRN' LIMIT 10
UNION SELECT count(*) FROM USERS ...
于 2013-07-22T08:13:18.833 回答
0

虽然您可以使用一个查询来做到这一点,但我认为在这种情况下,使用两个查询会更好。它简化了您的代码,并且查询也可能会更快。

如果两个单独的查询太慢,您可能需要 users.id 和 user_courses.user_id 的索引或主键。

SELECT COUNT(*)
FROM users, user_courses 
WHERE users.id = user_courses.user_id 
AND user_courses.CRN = '$CRN'

SELECT *
FROM users, user_courses 
WHERE users.id = user_courses.user_id 
AND user_courses.CRN = '$CRN'
LIMIT 10
于 2013-07-22T12:20:22.510 回答
0
select @max,result.* from (
SELECT @sno:=@sno+1 ,users.*,user_courses.*   FROM users, user_courses ,(select @sno:=0) as initSno 
WHERE users.id = user_courses.user_id AND user_courses.CRN = '$CRN'
)  result,(select @max:=max(@sno)) as maxNo 
于 2013-07-22T08:33:29.630 回答