2014-08-29 48 views
0

因此,假設我有一個名爲xjet的數據庫和一個名爲樣本的表,其中有3個樣本,其中包含標記:頻率和溫度。它看起來像這樣:如何避免選擇所有行顯示相同值的列(SQL查詢)

ID = 1,頻率= 10000,溫度= 50

ID = 2,頻率= 10000,溫度= 30

ID = 3,頻率= 10000,溫度= 50

我想,他們的價值是永遠不變的,所以在這種情況下,我想查詢顯示不顯示列:

ID = 1,溫度= 50

ID = 2,溫度= 30

ID = 3,溫度= 50

假定當然,我不知道前面的溫度和頻率的值。我該如何做這樣的查詢? 我使用MySqli和PHP,如果它是相關的

+1

意志頻率一直不變?如果是這樣,那麼只是從查詢 – QuinnFTW 2014-08-29 18:15:35

+3

排除它的數據庫的工作是給你你請求的領域。決定這不是它的工作「嘿,這個領域只是重複,我會跳過它」。您可以確定哪些字段完全相同,然後根本不請求它們。這意味着你必須運行查詢兩次。一次尋找傻瓜,另一次消除愚蠢。 – 2014-08-29 18:15:49

+0

你可以簡單地將它從你的選擇中排除, 但是如果你想選擇但是唯一的,那麼你可以使用DISTINCT – 2014-08-29 18:42:18

回答

0

我不坐在LAMP設置,但這裏是你如何寫這樣的東西。 (使用ms sql2008)與mysql命令非常相似。是什麼讓你的查詢有點模糊,你是否會通過頻率?你不顯示頻率的原因是什麼/有人會知道頻率值的分組?

創建測試表和負載值:

create table #testTable 
(
    id int identity(1,1), 
    Frequency int default null, 
    Temperature decimal default null 
) 

INSERT into #testTable (Frequency, Temperature) 
    VALUES 
     (10000, 50), 
     (10000, 30), 
     (10000, 50) 
     ; 

declare @someValue int = 10000; 

select 
    tt.id, 
    tt.Temperature 
from 
    #testTable tt 
where 
    tt.Frequency = @someValue 

上面的代碼適用於只有一個值。

現在你說你不知道以前的頻率下面的代碼會產生結果給你,因爲你沒有提供一個頻率。下面的代碼的問題是你可以通過輸出看到這些行是如何分組的。 (下面只是將代碼從上面使用表。)

select 
    z.id, 
    z.Temperature 
from 
    (
    select distinct frequency from #testTable tt group by tt.Frequency 
) as t 
inner join #testTable z on t.Frequency = z.Frequency; 
+0

那麼,你仍然是手動選擇ID和溫度。但是如果溫度是相同的並且只有頻率發生了變化呢?假設您基於名爲「size」的新列進行搜索,並且您將獲得該頻率的變化並且溫度相同。 基本上看來你不能真的查詢這樣的東西,它需要通過一般的腳本語言 – 2014-08-30 11:22:50

0

我最終採用PHP解決它......謝謝大家的答覆

+0

這可能是正確的方式來做到這一點,因爲它聽起來像一個演示問題,而不是查詢問題。 – siride 2014-08-30 19:00:11

相關問題