有两个SQL语句。一个是
select count(*) from steventable where username='steven';
select * from steventable where username='steven' LIMIT 0 , 30;
是否可以将两个SQL语句合并为一个?第一个是在用户名为steven时获取steventable中的记录数,第二个是获取用户名为steven的前30个记录。
我正在使用MySQL。
答案 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;
我不知道为什么你需要这样做,但是没有充分的理由将这两个查询合并为一个。