我有一個包含記錄的表如下: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並不複雜寫,但我已經嘗試了幾個小時了,仍然沒有得到滿意的結果。有什麼建議麼?
我有一個包含記錄的表如下: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並不複雜寫,但我已經嘗試了幾個小時了,仍然沒有得到滿意的結果。有什麼建議麼?
我以爲你在找group by
。
select Column_1, Column_2, Column_3 from table_name group by Column_2, Column_3
上面的查詢工作在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行。
您可以在那裏看到一個額外的Column_0 - 應該是表中的主要[整數]鍵。我推測你已經擁有它了。如果沒有,則需要將其添加,否則,當您有重複的Column_2時,您不知道哪個是最後一行插入到表中以便返回它。
此外,limit 1
特定於MySQL。 MSSQL中的等效項爲select top 1 ...
,Firebird select first 1 ...
等。您沒有指定您正在使用的rdbms。
您的查詢甚至不會運行,在一些SQL實現(非聚合列一個聚合查詢) – 2011-12-21 08:10:17
對於接受查詢的數據庫,這將爲您提供三行結果。例如MS SQL Server沒有。 – Guffa 2011-12-21 08:11:14
是的,你是對的,它不會做他所需要的,因爲還會顯示3條記錄。現在仔細閱讀,我不明白他究竟想要達到什麼目的。 – talereader 2011-12-21 08:12:01
,讓你這一結果的查詢是:
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')
什麼的疑問,你試過嗎? – 2011-12-21 08:06:32
......你爲什麼要這兩行,而不是其他兩行?另外,你使用的是什麼服務器軟件? – 2011-12-21 08:07:36
感謝球員...沒關係這個..我使用的資格,並得到了結果.. – visakh 2011-12-21 08:56:40