Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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_Sql_Select - Fatal编程技术网

Mysql 选择多列中值最高的行

Mysql 选择多列中值最高的行,mysql,sql,select,Mysql,Sql,Select,可能重复: 这是我的表模式 --transaction_details-- transaction_id primary_key auto inc entity_name entity_transaction 现在,一个实体可以有多个事务。我想查询每个实体的最后一个事务,这与查找特定列不同。这可以通过为每个实体选择具有last/max transaction_id的行来实现。但是我不能写这个查询。我尝试使用“按实体名称分组”,但它会选择任意随机行。如果同一实体名称的实体\u事务始终相同,则

可能重复:

这是我的表模式

--transaction_details--
transaction_id primary_key auto inc
entity_name 
entity_transaction

现在,一个实体可以有多个事务。我想查询每个实体的最后一个事务,这与查找特定列不同。这可以通过为每个实体选择具有last/max transaction_id的行来实现。但是我不能写这个查询。我尝试使用“按实体名称分组”,但它会选择任意随机行。

如果同一实体名称的实体\u事务始终相同,则可以这样做:

select max(transaction_id), entity_name, entity_transaction
from transaction_details
group by entity_name, entity_transaction
如果同一实体名称的实体\u事务可以有不同的值,请使用此查询:

select g.transaction_id, g.entity_name, d.entity_transaction
from
(
    select max(transaction_id) transaction_id, entity_name
    from transaction_details
    group by entity_name
) g
inner join transaction_details d
  on g.entity_name = d.entity_name and g.transaction_id = d.transaction_id
试试这个:

select * 
from   <table> t
join
     ( select entity_name,max(transaction_id) as transaction_id
       from <table>
       group by entity_name)a
on    a.entity_name=t.entity_name
and   a.transaction_id=t.transaction_id

可能重复:Naah,给出特定行的结果,我希望每个实体都有最高id的行。@Sourabh:所以你会做完全相同的事情,只是你的内部查询将按实体名称分组。好吧,正如我写的,我试过了,但分组方式给出了意外的结果。不,如果是相同的,那就不一样了,为什么我需要一个特定的版本。@苏拉布:好吧,显然是因为事务id。无论如何,我添加了另一个版本,请看一看并删除下一票。