SQL根据一列筛选多条记录

SQL根据一列筛选多条记录,sql,Sql,我有一个包含以下记录的表: Column_1 Column_2 Column_3 CA 123 EN CA 123 SP CA 789 EN 我的输出应如下所示: Column_1 Column_2 Column_3 CA 123 SP CA 789 EN 我知道这个sql编写起来并不复杂,但我已经尝试了几个小时,仍然没有得到令人满意的结果。

我有一个包含以下记录的表:

Column_1  Column_2  Column_3

CA        123       EN

CA        123       SP

CA        789       EN
我的输出应如下所示:

Column_1  Column_2  Column_3

CA         123       SP

CA         789       EN

我知道这个sql编写起来并不复杂,但我已经尝试了几个小时,仍然没有得到令人满意的结果。有什么建议吗?

我还以为你在找一个团员呢

上面的查询在MySQL中工作,但在注释中指出的许多其他SQL实现中不起作用,我认为它不能满足您的实际需要。返回3行,而不是2行

再说一次,只是猜测,但据我所知,也许这就是你想要的:

select Column_1, Column_2, 
  (select Column_3 from test_table t2 
   where t2.Column_1=t1.Column_1 and t2.Column_2=t1.Column_2 
   order by Column_0 desc limit 1) as Column_3
from test_table t1
group by Column_1, Column_2
这在MySQL中工作,没有在任何其他系统中测试。根据请求准确返回2行

您可以在那里看到一个额外的列\u 0-它应该是表中的主[integer]键。我想你已经有了。如果没有,您需要添加它,否则您将不知道插入表中的最后一行是哪一行,以便在列_2有重复项时返回它


此外,限制1是MySQL特有的。MSSQL中的等效项是select top 1…,对于Firebird select first 1…,等等。您没有指定正在使用的rdbms。

给出该结果的查询是:

select Column_1, Column_2, Column_3
from TheTable
where
  (Column_2 = 123 and Column_3 = 'SP')
  or
  (Column_2 = 789 and Column_3 = 'EN')

您尝试的查询是什么?…为什么您想要这两行,而不是其他两行?另外,您使用的是什么服务器软件?谢谢各位…别在意这一点..我使用了Qualife并得到了结果..再次感谢所有评论和回答的人..您的查询甚至不会在一些SQL实现上运行--聚合查询中的非聚合列--这将为接受查询的数据库提供一个包含三行的结果。例如,MS SQL Server没有。是的,你是对的,它没有满足他的需要,因为仍然会显示3条记录。现在仔细阅读,我不明白他真正想要实现什么。根据我的理解:如果第2列中有多个相同的值:显示第3列的最后一个条目。。。但我不确定这在SQL中是否可行。。。
select Column_1, Column_2, Column_3
from TheTable
where
  (Column_2 = 123 and Column_3 = 'SP')
  or
  (Column_2 = 789 and Column_3 = 'EN')