我已经阅读了一些关于此的帖子,但似乎无法解决我的问题。
我正在调用两个数据库查询来填充彼此并排运行的两个数组,但它们不匹配,因为它们出来的顺序不同。我相信我与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
即使'Order by'相同,结果也不匹配。用户以不同的顺序出现。
我希望这是有道理的,并且事先感谢。
*更新* 我只想对我想要的输出添加一些清晰度。我只需要一个用户(user_bid)显示1个结果,第二个查询显示所有用户行。我只需要第一个显示为每个用户输入的第一行。因此,如果我可以在小组之前订购并且在最短的约会之前订购,那将是王牌......
答案 0 :(得分:3)
这是可以预料的。您正在获取不参与分组的字段,并且不属于聚合函数。 MySQL允许这样的事情,但一般来说,未组合/未聚合的函数的结果可能会很糟糕。
由于MySQL可以自由选择可能多个“空闲”行的WHICH来为实际结果行选择,因此您将得到不同的结果。通常它会选择第一次遇到的“自由选择”结果,但这没有定义/保证。
答案 1 :(得分:0)
如果您希望根据某些结果集获得结果集中的唯一结果,则可以使用分组 组ID(列名)。通常分组与聚合函数一起使用,例如 (min,max,count,sum ..)。
排序或内部查询与结果集无关,我建议阅读一些介绍 有关分组和思考/处理Sql作为基于集合的语言的教程,大多数集合理论都适用于sql你会没事的。
答案 2 :(得分:0)
所以我使我不需要的问题复杂化。我找到的解决方案是在之前。
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
感谢大家让我更努力地看待(尝试)...