Mysql 特定条件的SQL查询

Mysql 特定条件的SQL查询,mysql,sql,Mysql,Sql,以下情况需要SQL语句的帮助。 表中有3列TableName、Sno唯一记录、Name有多个记录可以具有相同的名称、条件True、False。 如果最后一条记录仅为真,则需要提取所有记录 我试过下面的问题 select Sno(Max),Name,Condition from TableName where Conditon = 'True' group by Name,Conditon; 预期:如果最后一条记录SNo Max具有value=true条件列,则返回此记录,否则不显示任何记

以下情况需要SQL语句的帮助。 表中有3列TableName、Sno唯一记录、Name有多个记录可以具有相同的名称、条件True、False。 如果最后一条记录仅为真,则需要提取所有记录

我试过下面的问题

select Sno(Max),Name,Condition 
from TableName 
where Conditon = 'True' 
group by Name,Conditon;
预期:如果最后一条记录SNo Max具有value=true条件列,则返回此记录,否则不显示任何记录


实际:显示所有记录,包括true和false条件

可以在条件true和Sno=maxSno的子查询中使用where exist

select  * 
from TableName 
where exist (
  select  * 
  from TableName 
  where  Condition = 'True'  
  and  Sno = (
  select  max(Sno) 
  from TableName 
  )
)

我想你正在寻找:

SELECT Sno, Name, Condition 
FROM TableName 
WHERE Conditon = 'True' AND Sno=(SELECT MAX(Sno) FROM TableName);
注意类型:如果“Condition”列是布尔型,则WHERE子句应为

WHERE Condition IS TRUE AND ... 

我想这就是你要找的。 如果表格如下所示:

[建议在MySQL中使用tinyint1作为布尔值。]

您可以使用以下查询:

选择a* 从'TableName'a 左JOIN`TableName`b ONa.`Sno`
这种方法比使用内部子查询更有效。尤其是在大型表格中。

上一条记录是什么意思,我看不到订单?选择列表中的SnoMax是什么?请添加示例数据和预期结果。您使用的是哪个MySQL版本?几行示例数据和预期结果将大大有助于我们了解您到底需要什么。最后一条记录的意思是,在我的示例中,如果我选择*TableName,结果将返回Sno 1,2,3,4,5,6,Name Prasan,Prasan,Prasan,Joakim,Joakim,Joakim和条件True,True,False,True,True,True,True,因此我期望结果为6,Joakim,True,因为最后一条记录为True,因此我只得到一条记录。我正在查找最后一条记录为真的所有记录,即条件=真例如,如果我选择*TableName,结果返回Sno 1,2,3,4,5,6,名称Prasan,Prasan,Joakim,Joakim,Joakim和条件true,true,False,true,true,true,我希望结果为6,Joakim,true,因为这里的最后一条记录为真,条件列不是布尔值,我只得到一条记录,但在我的表中,有多条记录的最大Snolast记录的条件列值为True OK,那个么我不清楚这个问题。如果你想得到高质量的答案,请提供详细的问题:我建议你修改原始问题,提供一个数据样本集,包括你提到的情况和预期结果。上面izem的评论就是我要寻找的确切结果,使用更简单的查询而不使用连接是否可能得到它?是的,这正是我所期望的结果,但我们可以使用更简单的查询吗?我的意思是,不使用连接条件?@pranshetty这种方法比使用内部子查询更有效。特别是在大型表中。此查询帮助我获得了所需的结果。非常感谢。
SELECT * 
FROM   tablename 
WHERE  sno IN (SELECT Sno(max) 
               FROM   tablename 
               GROUP  BY NAME) 
       AND condition = 'true'