Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL分组方式和顺序方式没有很好地结合在一起_Mysql - Fatal编程技术网

MySQL分组方式和顺序方式没有很好地结合在一起

MySQL分组方式和顺序方式没有很好地结合在一起,mysql,Mysql,我读了一些关于这方面的帖子,但似乎无法解决我的问题 我调用两个数据库查询来填充两个并排运行的数组,但它们不匹配,因为它们的出现顺序不同。我相信我与Group By有关,这可能需要一个子查询,但还是有点不知所措 问题1: SELECT count(bids_bid.total_bid), bidtime_bid, users_usr.company_usr, users_usr.id_usr FROM bids_bid INNER JOIN users_usr ON bids_bid.use

我读了一些关于这方面的帖子,但似乎无法解决我的问题

我调用两个数据库查询来填充两个并排运行的数组,但它们不匹配,因为它们的出现顺序不同。我相信我与Group By有关,这可能需要一个子查询,但还是有点不知所措

问题1:

SELECT count(bids_bid.total_bid), bidtime_bid, users_usr.company_usr, users_usr.id_usr 
FROM bids_bid 
INNER JOIN users_usr 
ON bids_bid.user_bid = users_usr.id_usr 
WHERE auction_bid = 36 
GROUP BY user_bid 
ORDER BY bidtime_bid ASC
问题2:

SELECT auction_bid, user_bid, bidtime_bid, bids_bid.total_bid 
FROM bids_bid 
WHERE auction_bid = 36  
ORDER BY bidtime_bid ASC
即使“订单依据”相同,结果也不匹配。用户以不同的顺序出现

我希望这是有意义的,并提前表示感谢

*更新*
我只是想澄清一下我想要的输出是什么。我只需要一个用户显示一个结果(user\u bid),第二个查询显示所有用户行。我只需要第一个来显示为每个用户输入的第一行。因此,如果我能在小组开始前和最短日期前订购,那将是ace…

这是意料之中的事。您正在获取的字段与分组无关,也不是聚合函数的一部分。MySQL允许这样的事情,但通常未分组/未聚合函数的结果可能不可靠


因为MySQL可以自由选择实际结果行的潜在多个“空闲”行中的哪一个,所以您将得到不同的结果。通常,它会选择第一个遇到的“自由选择”结果,但这不是定义/保证的。

这是意料之中的。您正在获取的字段与分组无关,也不是聚合函数的一部分。MySQL允许这样的事情,但通常未分组/未聚合函数的结果可能不可靠


因为MySQL可以自由选择实际结果行的潜在多个“空闲”行中的哪一个,所以您将得到不同的结果。通常,它会选择第一个遇到的“自由选择”结果,但这不是定义/保证的。

当您希望根据某些规则在结果集中获得唯一结果时,可以使用分组 组id(列名)。通常分组与聚合函数一起使用,例如 (最小值、最大值、计数、总和…)

排序或内部查询与结果集无关,我建议阅读一些介绍性内容
关于分组和思考/将Sql视为基于集合的语言的教程,大部分集合理论都应用于Sql,你会没事的

当您希望根据某些规则在结果集中获得唯一结果时,可以使用分组 组id(列名)。通常分组与聚合函数一起使用,例如 (最小值、最大值、计数、总和…)

排序或内部查询与结果集无关,我建议阅读一些介绍性内容
关于分组和思考/将Sql视为基于集合的语言的教程,大部分集合理论都应用于Sql,你会没事的

所以我把我不需要的问题复杂化了。我找到的解决办法是以前的

SELECT users_usr.company_usr, 
    users_usr.id_usr, 
    bids_bid.bidtime_bid, min(bidtime_bid) as minbid FROM bids_bid INNER JOIN users_usr ON bids_bid.user_bid = users_usr.id_usr
WHERE auction_bid = 36
GROUP BY id_usr
ORDER BY minbid ASC

谢谢大家让我看起来更努力…

所以我把我不需要的问题复杂化了。我找到的解决办法是以前的

SELECT users_usr.company_usr, 
    users_usr.id_usr, 
    bids_bid.bidtime_bid, min(bidtime_bid) as minbid FROM bids_bid INNER JOIN users_usr ON bids_bid.user_bid = users_usr.id_usr
WHERE auction_bid = 36
GROUP BY id_usr
ORDER BY minbid ASC

感谢大家让我看得更仔细…

换一种方式解释一下,将您的查询“聚束”成束,这样它就必须知道要折叠的字段是什么,分组依据是什么。谢谢Marc,我该如何排序第一个查询以匹配第二个查询?强制两个查询都按相同的规格排序。如果用户名是相关的,那么将其添加到sort by子句。越来越困惑:)我只需要一个用户显示一个结果(user\u bid)第二个查询显示所有用户行。我只需要第一个字段就可以显示为每个用户输入的第一行。另一种解释是,将查询分组“成束”成束,这样它就必须知道要折叠的字段是什么,分组依据是什么。谢谢Marc,我如何排序第一个查询以匹配第二个?强制两者按相同的规格排序。如果用户名是相关的,那么将其添加到sort by子句。越来越困惑:)我只需要一个用户显示一个结果(user\u bid)第二个查询显示所有用户行。我只需要第一个来显示为每个用户输入的第一行。add bidtime\u bid,users\u usr.company\u usr,users\u usr.id\u usr to group by too。add bidtime\u bid,users\u usr.company\u usr,users\u usr.id\u usr to group by too。