mysql选择某些信息和计数

mysql选择某些信息和计数,mysql,Mysql,这是我的数据库结构 id, user_id, veh_id, amount 1, 2, 3, 123 2, 2, 4, 125 3, 1, 3, 122 4, 1, 4, 126 我正在尝试获取一个SELECT来计算每个用户id的次数,即它作为每个车辆id的金额的次数。如果用户id上没有任何金额,我希望为此显示0 我正在考虑使用SUMIF,但我不知道如何才能让它们都按用户id放在一个漂亮的表中 这是我到目前为止所拥有的 SELECT user_id, SUM(IF(user_id !=0, 1

这是我的数据库结构

id, user_id, veh_id, amount
1, 2, 3, 123
2, 2, 4, 125
3, 1, 3, 122
4, 1, 4, 126
我正在尝试获取一个SELECT来计算每个用户id的次数,即它作为每个车辆id的金额的次数。如果用户id上没有任何金额,我希望为此显示0

我正在考虑使用SUMIF,但我不知道如何才能让它们都按用户id放在一个漂亮的表中

这是我到目前为止所拥有的

SELECT user_id, SUM(IF(user_id !=0, 1, 0)) AS COUNT
FROM TABLE 
GROUP BY user_id
我在正确的轨道上得到我想要的

这是我修改后的问题,结果接近我想要的:

我可以有一种方法来计算用户在车辆id上成为最高出价者的时间吗
因此,如果一个用户出价30辆车,我可以看出他是出价最高者的12倍

为了得到count=0的情况,你需要有一个与此表相关的车辆表。如果没有这一点,你就没有明确的方法来理解可能的交通工具的宇宙是什么。我还假设您有一个用户表,因为如果没有这个,您就不知道完整的用户。您需要将这三个表连接起来才能得到答案

在本例中,我假设表名为users、users\u vehicles、vehicles

SELECT u.user_id, v.vehicle_id, COUNT(uv.id)
FROM users AS u
LEFT JOIN users_vehicles AS uv
   ON u.user_id = uv.user_id
RIGHT JOIN vehicles AS v
   ON uv.veh_id = v.veh_id
GROUP BY u.user_id, v.vehicle_id

请注意,用户和用户\车辆之间的左连接将包括所有用户\ id值,即使用户\车辆中不存在该用户\ id。同样,用户车辆和车辆之间的右连接将包括所有车辆id值,即使它们不在用户车辆中

对于每个用户id来说,它作为每个车辆id金额的次数意味着什么?这是一个拍卖系统,这是我存储用户竞价信息的表格。每个用户可以在每个车辆id上出价,我想知道每个用户出价多少辆车。例如,对于用户X,他对41辆汽车中的26辆出价。我想让这两个数字的用户在55个被允许查看的项目中,出价33个。这将与其他表连接以获取日期。我假设您有一个与此相关的车辆表,这样您就可以通过某种方式了解用户没有哪些车辆?您的查询似乎满足了您的要求,除非我误解了你的问题?使用fillde,它似乎起作用,但它只显示我是否有车辆的活动,如果我没有投标一辆车,我怎么能问同一个SUMIF,但找到我的用户id不存在的车?这是我实际的选择语句:选择ep.DELER\u name,SUMIFeb.user\u id=0,1,0作为暂定,COUNTe.id来自uuu ezautos_出价作为eb LEFT JOIN uu ezautos_uProfile作为ep上的ep.mid=eb.user_uid LEFT JOIN uuu ezautos作为e上的e.id=eb.veh_id,其中e.listdate在“2013-07-01”和“2013-07-31”组之间,由ep.dealer命名。总和和计数给我相同的数字。我想要两个不同的数字:我竞购汽车的次数和我没有竞购汽车的次数。如果我想要0,可能会更简单。所以如果用户没有出价,我得到了一个0作为总数,因此我不需要知道有多少次用户没有出价。有没有办法知道有多少次用户作为最高的出价在所有的出价,他对每个car@maphaneuf我不完全理解您在评论中提到的表与我提到的表之间的映射。您可以尝试使用实际的表信息和正在使用的查询更新原始问题,以便清楚发生了什么。您当然可以形成一个查询,以找出用户成为最大投标人的次数,并要求使用子查询。如果不真正理解表的结构,就很难做到这一点。