是否可以将以下两个SQL语句合并为一个?

时间:2009-11-26 13:46:14

标签: sql mysql

有两个SQL语句。一个是

select count(*) from steventable where username='steven';
select * from steventable where username='steven' LIMIT 0 , 30;

是否可以将两个SQL语句合并为一个?第一个是在用户名为steven时获取steventable中的记录数,第二个是获取用户名为steven的前30个记录。

我正在使用MySQL。

3 个答案:

答案 0 :(得分:1)

虽然它仍然是两个陈述,但使用FOUND_ROWS函数和SQL_CALC_FOUND_ROWS应该可以满足您的需要,并且比两个单独的查询更有效。

SELECT SQL_CALC_FOUND_ROWS *
FROM steventable
WHERE username = 'steven'
LIMIT 0, 30;

SELECT FOUND_ROWS();

答案 1 :(得分:0)

由于第二个查询返回30行;这是否意味着您希望每一行还包含总行数?在这种情况下,您必须使用子查询

select *, (select count(*) from steventable where username='steven') allSteven from steventable where username='steven' LIMIT 0 , 30;

我认为将这些分成不同的查询更有意义

答案 2 :(得分:0)

select (select count(*) from steventable where username='steven') AS the_count,
st.* from steventable st where st.username='steven' LIMIT 0 , 30;

我不知道为什么你需要这样做,但是没有充分的理由将这两个查询合并为一个。