J'ai une table comme ci-dessous (laissez appelé cette table sous t1) Je souhaite sélectionner la ligne avec deux conditions. P> Donc, voici ma combinaison unique est p>
unique AS_ID, nom de code code> li>
ol>
Sortie attendue: H3>
+----+---------------------+---------+-----------------------+-------+-------------+
| id | timestamp | p_value | TS | as_id | codename |
+----+---------------------+---------+-----------------------+-------+-------------+
| 3 | 2019-03-13 07:55:44 | 561 | 2019-03-13 07:53:17 | 1795 | ActivePower |
+----+---------------------+---------+-----------------------+-------+-------------+
| 5 | 2019-03-13 07:56:26 | 974 | 2019-03-13 07:33:28 | 1795 | Cumulative |
+----+---------------------+---------+-----------------------+-------+-------------+
3 Réponses :
utilise la sous-requête corrélée
select t1.* from table_name t1 where (t1.timestamp,id) in ( select max(timestamp),max(id) from table_name t2 where t1.as_id=t2.as_id and t1.codename=t2.codename )
Utilisez la sous-requête corrélée
select * from tablename a where id in (select max(id) from tablename b where a.as_id=b.as_id and a.codename=b.codename)
Vous pouvez y parvenir par Row_Number ()
SELECT id, timestamp, p_value, TS, as_id, codename FROM ( SELECT *, ROW_NUMBER() OVER(PARTITION BY as_id, codename ORDER BY TS DESC) AS RN FROM Table ) AS Q WHERE RN = 1