2017-05-15 20 views
0

クエリ表示結果 - mysqlの

select 
    min(temperature) as minTemp, 
    max(temperature) as maxTemp from test 
union 
( 
    select 
     temperature as Temp , 
     datetime as Date 
    from test 
     order by datetime desc 
    limit 1 
) 

が結果を返す:

私のような別々の列に結果を表示するにはどうすればよい
+---------+---------------------+ 
| minTemp | maxTemp    | 
+---------+---------------------+ 
| 24.11 | 26.739999771118164 | 
| 25.93 | 2017-05-14 15:11:09 | 
+---------+---------------------+ 

+---------+---------------------+----------+----------------------+ 
| minTemp | maxTemp    | Temp |Date     | 
+---------+---------------------+----------+----------------------+ 
| 24.11 | 26.739999771118164 | 25.93 | 2017-05-14 15:11:09 | 
|   |      |   |      | 
+---------+---------------------+----------+----------------------+ 
+0

ユニオンは、複数のセットの結果を結合します。なぜこれを達成したいのですか?複数の選択肢を使用するだけです –

答えて

1

このケースではCROSS JOINはあなたの友人だと思います。

select 
    min(temperature) as minTemp, 
    max(temperature) as maxTemp, 
    t.Temp, 
    t.Date 
from 
    test 
    CROSS JOIN 
    (
     select 
      t1.temperature as Temp , 
      t1.datetime as Date 
     from 
      test as t1 
     order by 
      t1.datetime desc 
     limit 1 
    ) as t 
0

これを行う方法は、ダミー列を追加し、グループ化を使用してそれらを結合することです。例えば

Select max(minTemp),max(maxTemp),max(Temp),max(Date) from (
    select 
     min(temperature) as minTemp, 
     max(temperature) as maxTemp from test , null as Temp, Null as Date 
    union 
    ( 
     select null as minTemp, null as maxtemp, 
     temperature as Temp , 
     datetime as Date 
     from test 
     order by datetime desc 
     limit 1 
    ) 
) 

これは、クエリの各部分に常に正確に1つの行があるため、この例でのみ機能します。そうでないと、まったく動作しません。

0

2つのテーブルの結果ROWSを結果セットとして追加します。 Joinは、2つ以上のテーブルのCOLUMNSを1つの行として追加します。したがって、このシナリオではおそらく結合がより良い選択になるでしょう。

これが機能するには、参加する必要があります(たとえば、IDまたは正確な日付など)。私はあなたがこれを持っている場合は知らないので、ここではサンプルのSQLです:

select 
min(test1.temperature) as minTemp, 
max(test1.temperature) as maxTemp, 
test2.temperature as Temp, 
test2.datetime as Date 
from test test1 join test test2 
on _something_that_you_can_join_on_ 
order by datetime desc limit 1 

TEST1とTEST2は、私たちが一緒に参加する二つのテーブルの別名です。

あなたが参加できるコラムはありますか?