我有两个名为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返回实际的图片数量。
答案 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)