2013-11-15 52 views
0

我想要隱藏我的select查詢中的某一列,並發現跳過列名可以做到這一點,但是對於這種情況,正確的語法是什麼?如何在mysql中的select查詢中使用跳過列名

這裏是我的代碼

select t1.location, MAX(DATE_ADD((FROM_UNIXTIME(t2.t_stamp/1000)),INTERVAL 4 HOUR) AS Tstamp, 

    max(case when t2.locationid = '2847' then t2.value end) MR, 
    max(case when t2.locationid = '2839' then t2.value end) Flow, 
    max(case when t2.locationid = '2834' then t2.value end) Pressure, 
    max(case when t2.locationid = '2836' then t2.value end) Level 

from table2 t2 
inner join table1 t1 
    on t1.id = '2847' 
group by t1.location 

等輸出我有最新的值列,

Location |  Tstamp  | MR | Flow | Pressure | Level 
    East | 2013-11-10 12:00 PM | 10 | 20 | 30  | 40 

四小時了

Location |  Tstamp  | MR | Flow | Pressure | Level 
    East | 2013-11-10 08:00 AM | 20 | 25 | 34  | 45 

,我想發生什麼是因爲它只是:

Location | MR | Flow | Pressure | Level 
    East | 20 | 25 | 34  | 45 

如果我從select查詢中刪除了t_stamp,我怎麼能在4小時前顯示這些值?

+0

你試過了什麼? –

+0

如果你不想要該領域,爲什麼選擇它,尤其是當它迫使數據庫浪費時間做一堆日期數學只是將被扔掉 –

+0

@viakondratiuk我試過這樣-MAX(DATE_ADD((FROM_UNIXTIME(t2.t_stamp/1000)),INTERVAL 4 HOUR)和--MAX(DATE_ADD((FROM_UNIXTIME(t2.t_stamp/1000)),INTERVAL 4 HOUR) – hearmeroar

回答

1
select t1.location, 
    max(case when t2.locationid = '2847' then t2.value end) MR, 
    max(case when t2.locationid = '2839' then t2.value end) Flow, 
    max(case when t2.locationid = '2834' then t2.value end) Pressure, 
    max(case when t2.locationid = '2836' then t2.value end) Level 
from table2 t2 
inner join table1 t1 on t1.id = '2847' 
where now() - INTERVAL 4 HOUR >= FROM_UNIXTIME(t2.t_stamp/1000) 
group by t1.location 
+0

我不能刪除它,因爲我需要它顯示過去4小時的值 – hearmeroar

+0

您不需要選擇它。你需要它在哪裏?在「where」條款中? –

+0

我試過做where子句並做WHERE MAX(DATE_ADD((FROM_UNIXTIME(t2.t_stamp/1000)),INTERVAL 4 HOUR)但我得到一個錯誤。如果我想把它放在哪裏子句? – hearmeroar

相關問題