我可以不用两次查询吗?

时间:2013-07-22 08:08:38

标签: mysql

我正在尝试从我的数据库中获取符合特定条件的十行数据。我正在尝试让在数据库中注册的前十个用户参加一门课程,但我也希望从数据库中获得参加该课程的用户总数。我知道使用limit只能返回十个用户,但有什么方法可以避免做两个查询,以便获得参加课程的用户总数。我目前的疑问如下。

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

3 个答案:

答案 0 :(得分: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 ...

答案 1 :(得分: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 

答案 2 :(得分: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
相关问题