我有一张桌子,看起来像这样:
NAME Col1 Col2 Col3 Tim 1 2 3 Tim 1 1 2 Tim 2 1 2 Dan 1 2 3 Dan 2 2 1 Dan 2 1 3
我试图做一个SELECT命令,结果是这样的:
NAME Col1 Col2 Col3 Tim 2 1 2 Dan 2 2 1
因此,我需要唯一的名称,但选择所有四个列,其中Col1 =2。我在这里使用解决方案来使唯一的部分正常工作: SQL / mysql- 选择唯一/唯一,但返回所有列?
但是,当我Col1 = '2'向select语句的WHERE部分添加add时,它不会返回Col1为2的所有名称,因为我认为它首先查找的是一个不同的数字,而不是1,因此需要该结果。
Col1 = '2'
希望我有道理,有人可以帮助。很难解释,并想出一个好标题。谢谢!
据我了解,此查询应该可以解决您的问题:
select distinct a.* from temp_ids a join (select name, max(col1 || ' ' || col2 || ' ' || col3) id from temp_ids where col1 = 2 group by name ) b on (a.name = b.name and (col1 || ' ' || col2 || ' ' || col3) = b.id) ;
当然,最好使用唯一记录ID代替串联,但是可以生成ID。确保id的函数为每个列组合返回唯一值(在这种情况下使用(col1 ||’‘|| col2 ||’‘||col3))