可以限制MySQL中的一行吗?

可以限制MySQL中的一行吗?,mysql,sql,Mysql,Sql,问题是,当我回显用户信息时,它也会多次回显一个列,即使它只有一个值。我想回显该列的最大值,而不是根据其他列重复多次 $sql = "SELECT * FROM users JOIN user_images ON users.username = user_images.username WHERE users.username = '$username' GROUP BY user_images.username"; “用户”表有一列和一个值,类似于配置文件图片。user_images表中有一

问题是,当我回显用户信息时,它也会多次回显一个列,即使它只有一个值。我想回显该列的最大值,而不是根据其他列重复多次

$sql = "SELECT * FROM users JOIN user_images ON users.username = user_images.username WHERE users.username = '$username' GROUP BY user_images.username";
“用户”表有一列和一个值,类似于配置文件图片。user_images表中有一列包含多个值,如POST。我还研究了GROUP BY应该帮助解决这个问题,但它似乎不起作用。有没有办法只回显最大行数或限制另一行数?

您需要在查询的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";
将返回每个用户名以及对应于该用户的posts列的最大值。您可以在SELECT语句中添加更多列,只要每个组只返回一条记录 变数

要返回所需结果的两个表,请执行以下操作:

一个表是指定用户的一列帖子:

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表中,则不需要执行连接。如果还需要用户表中的列,则可以重新添加联接。

编辑问题并提供示例数据和所需结果。什么列的最大值?@GordonLinoff对不起,我是指行。在表users中,每个用户只有一行,而对于user_images表,同一用户有多行。我只想回显用户表的最大数量。该组一直将用户帖子数量限制为一个。我必须把所有东西都换了吗@EFBBROWN您正在使用users.username='$username'行将查询筛选为单个用户名。然后按用户名分组,这样就可以只返回该用户名的一个结果。我以为这是你想要的,但现在还不清楚。也许您应该包括一个您希望查询返回的表的示例,以便它更清晰。是的,但我只想限制users表,而不是user\u images表。。。很抱歉给你带来了困惑。我仍然在学习更多关于SQL@EFBBrowOnce的知识,因为在查询中有一个联接,所以不能只过滤一个表,因为join子句只返回两个表中存在的行。所以通过过滤一个,你也在过滤另一个。例如,如果您过滤用户表,使其仅包含用户名ABC,那么当您加入用户名上的user_images表时,您只会在该表中收到用户名ABC的行。啊,好的,这很有意义。那么,是否没有办法只过滤一个表?或者JOIN是我不应该用来完成任务的东西?