在mysql查询中限制结果

时间:2011-02-21 09:01:38

标签: php mysql

我有两个名为users和images的mysql表。 每个用户最多可以有5张图片。 在页面中,我显示用户信息和一个图像(首次上传)。当我像这样查询时

SELECT
  SQL_CALC_FOUND_ROWS,
  u.username,
  u.gender,
  u.etc
  .........
  i.picture
FROM users u
LEFT JOIN images i on u.id = i.id
WHERE 
 some_condition

如果用户有两个上传的图像,则mysql结果为2行。如果图像是3个返回的行是3,依此类推。 怎么做的结果只是一行(一个图)?

我尝试添加LIMIT 0,1但SQL_CALC_FOUND_ROWS返回实际的图片数量。

3 个答案:

答案 0 :(得分:0)

您可以使用case when子句。我不是MySQL人,但你可以尝试这样的事情:

SELECT
  case 
    when SQL_CALC_FOUND_ROWS > 5 then '5'
    else SQL_CALC_FOUND_ROWS
  end,
  u.username,
  u.gender,
  u.etc
  .........
  i.picture
FROM users u
LEFT JOIN images i on u.id = i.id
WHERE 
 some_condition

答案 1 :(得分:0)

SQL_CALC_FOUND_ROWS将返回完整结果集中的行数,而LIMIT语句则告诉查询仅从该结果集中返回有限数量的行

我不明白为什么你需要在这里使用SQL_CALC_FOUND_ROWS,你可以只计算最后一个结果集中的行数(并使用LIMIT)。

$count = mysql_num_rows($result)

答案 2 :(得分:0)

你可以做到

select max(i.uploadDate) group by (u.id)