INNER join Return 未 Returning 总结果

INNER join Return Not Returning total Results

trade_data 表格


id 符号操作价格百分比


1 1 买 3.4 50


2 1 卖出 3.8 25


3 2 卖出 45 75


3 2 买 25.2 50


符号表


身份证名


1 个 RCC


2 注册



SELECT SUM( IF( trade_data.action = 'BUY', price, 0 ) ) AS 'BUYSUM', SUM( IF( trade_data.action = 'SELL', price, 0 ) ) AS 'BUYSELL', AVG( trade_data.percent ) AS peravg, 符号。 * 来自 trade_data 内连接 symbol 在 trade_data.symbol = symbol.id

此查询为我提供了一行,但在此条件下有两行可用。 但是当我将查询更改为

SELECT trade_data.* , symbol. * 
FROM  `trade_data` 
INNER JOIN  `symbol` ON trade_data.symbol = symbol.id

然后这个查询给了我 2 行。

SUM() in mysql 给出结果行中指定列的总和。所以在这里,SUM(price) 会给你总价格,加上每行的价格值。并且总数始终是单个值,因此您得到单行输出。

希望对您有所帮助。

您正在使用 AVG()SUM() 函数,这就是为什么您得到一个记录

The AVG() Function
The AVG() function returns the average value of a numeric column.


The SUM() Function
The SUM() function returns the total sum of a numeric column.

如果您有多个 trade_data.symbol = symbol.id(超过 1 个 ID),您可以使用 GROUP BY 来获取具有相似 ID 的每条记录的总和和平均值,因为您只有 1 个相同的 symbol.idtrade_data.symbol 你只会得到一条记录。

将分组依据与聚合函数结合使用 例如

SELECT SUM( IF( trade_data.action =  'BUY', price, 0 ) ) AS  'BUYSUM', SUM( IF( trade_data.action =  'SELL', price, 0 ) ) AS  'BUYSELL', AVG( trade_data.percent ) AS peravg, symbol. * 

来自trade_data INNER JOIN symbol ON trade_data.symbol = symbol.id 按 symbol.id

分组