可以在MySQL中限制一行吗?

时间:2018-02-11 15:58:25

标签: mysql sql

问题在于,当我回显用户信息时,即使它有一个值,它也会多次回显一列。我希望回显出该列的最大值,而不是多次执行,具体取决于其他列。

$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应该帮助解决这个问题,但似乎没有用。有没有办法只回显最大行数或限制另一行?

1 个答案:

答案 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表中的列,则可以重新添加联接。