0

私のテーブルの説明は

+-------------+-----------------+------+-----+-------------------+-----------------------------+
| Field       | Type            | Null | Key | Default           | Extra                       |
+-------------+-----------------+------+-----+-------------------+-----------------------------+
| AutoPk      | int(4) unsigned | NO   | MUL | NULL              |                             |
| sensorName  | varchar(20)     | NO   |     | NULL              |                             |
| SensorValue | double(65,2)    | NO   |     | 0.00              |                             |
| timest      | timestamp       | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------------+-----------------+------+-----+-------------------+-----------------------------+

Sample data is 

+----------+--------------+--------------+---------------------+
| AutoPk8_ | sensorName8_ | SensorVa3_8_ | timest8_            |
+----------+--------------+--------------+---------------------+
|      104 | temperature  |        14.22 | 2013-09-20 09:59:35 |
|      104 | humidity     |        71.74 | 2013-09-20 09:59:35 |
|      104 | humidity     |        71.24 | 2013-09-20 09:56:42 |
|      104 | temperature  |        14.36 | 2013-09-20 09:56:41 |
|      104 | temperature  |        14.47 | 2013-09-20 09:53:47 |
|      104 | humidity     |        71.03 | 2013-09-20 09:53:47 |
|      104 | temperature  |        14.74 | 2013-09-20 09:50:54 |
|      104 | humidity     |        70.50 | 2013-09-20 09:50:54 |
|      104 | light intensi|        12    | 2013-09-20 09:49:00 |       
|      104 | temperature  |        15.28 | 2013-09-20 09:48:00 |
|      104 | humidity     |        69.60 | 2013-09-20 09:48:00 |
+----------+--------------+--------------+---------------------+
10 rows in set (0.06 sec)

ここで、 sensorName に基づいて最新のレコードを検索するクエリが必要です。ここでの最新記録とは、最新の時間記録を意味します。

上記の i/p 出力は次のようになります。

 104 | temperature  |        14.22 | 2013-09-20 09:59:35
 104 | humidity     |        71.74 | 2013-09-20 09:59:35 
 104 | light intensi|        12    | 2013-09-20 09:49:00 

私を助けてください 。前もって感謝します。

4

2 に答える 2

2

単に、

SELECT
  MyTable.AutoPk,MyTable.sensorName,MyTable.SensorValue,MyTable.SensorValue,MyTable.timest
FROM (SELECT
  MAX(timest8_) AS RegTime,
  sensorName8_
FROM MyTable
GROUP BY sensorName8_)
AS Result1
INNER JOIN MyTable
  ON Result1.RegTime = MyTable.timest8_
WHERE Result1.sensorName8_ = MyTable.sensorName8_

センサー名で最新の timest8_ を選択し、結果セットを MyTable で内部結合します。結果セットから必要な列を選択できます。

于 2013-09-20T04:57:06.833 に答える
0

テーブル名が見つからないので、そのテーブル名と名前を検索したいものと仮定すると、その名前の最新のレコードが返されます。

SELECT * FROM TableName WHERE sensorName = 'Name' ORDER BY timest DESC LIMIT 1 
于 2013-09-20T04:58:34.763 に答える