问题在于,当我回显用户信息时,即使它有一个值,它也会多次回显一列。我希望回显出该列的最大值,而不是多次执行,具体取决于其他列。
$sql = "SELECT * FROM users JOIN user_images ON users.username = user_images.username WHERE users.username = '$username' GROUP BY user_images.username";
users
表有一列,其中一个值类似于个人资料图片。 user_images
表有一列,其中包含多个值,如帖子。我还研究过GROUP BY
应该帮助解决这个问题,但似乎没有用。有没有办法只回显最大行数或限制另一行?
答案 0 :(得分:0)
您需要替换查询*
位中的SELECT *
,这样您才能为每列不在GROUP BY
子句中选择一个值。
例如:
SELECT user_images.username, MAX(user_images.posts)
FROM users
JOIN user_images
ON users.username = user_images.username
WHERE users.username = '$username'
GROUP BY user_images.username";
将返回与该用户对应的每个用户名和最大帖子列。只要您只为SELECT
返回一条记录,就可以在GROUP BY
语句中添加更多列
变量
返回两张表以获得所需结果:
一个表是指定用户的一列帖子:
SELECT posts
FROM user_images
WHERE username = '$username';
该用户名和个人资料图片的第二个:
SELECT username, profile_image
FROM user_images
WHERE username = '$username'
GROUP BY username, profile_image;
如果所有这些列都在user_images表中,则不需要您正在进行的连接。如果您还需要users
表中的列,则可以重新添加联接。