2017-09-14 1 views
1

Salut j'eu un doute dans la requête mysqlmysql problème de comparaison de l'horodatage

mysql> SELECT * from share5; 
+----+-------+--------------+--------+-------+---------------------+ 
| Id | Price | State  | Symbol | Trade | created_date  | 
+----+-------+--------------+--------+-------+---------------------+ 
| 1 | 120 | maharashtra | mh  | buy | 2017-09-12 12:18:11 | 
| 1 | 121 | maharashtra | mh  | buy | 2017-09-12 12:18:36 | 
| 2 | 122 | karnataka | ka  | sell | 2017-09-12 12:19:26 | 
| 2 | 123 | karnataka | ka  | sell | 2017-09-12 12:20:00 | 
| 3 | 124 | tamil nadu | tn  | buy | 2017-09-12 12:20:30 | 
| 3 | 125 | tamil nadu | tn  | buy | 2017-09-12 12:20:43 | 
| 4 | 127 | andrapradesh | ap  | buy | 2017-09-12 12:26:26 | 
| 4 | 126 | andrapradesh | ap  | buy | 2017-09-12 12:26:39 | 
| 4 | 126 | andrapradesh | ap  | buy | 2017-09-12 16:57:19 | 
+----+-------+--------------+--------+-------+---------------------+ 

Je veux sélectionner dernière valeur dans l'index par en comparant 2 id pour exemple ci-dessus, je veux filtrer dernier un en comparant l'horodatage . J'ai essayé le ci-dessous, mais il ne donne que la première valeur ajoutée pas plus tard. Est-il possible de comparer deux identifiants et de filtrer le dernier?

mysql> SELECT price,id,state,symbol,trade,created_date from share5 group by id ; 
+-------+----+--------------+--------+-------+---------------------+ 
| price | id | state  | symbol | trade | created_date  | 
+-------+----+--------------+--------+-------+---------------------+ 
| 120 | 1 | maharashtra | mh  | buy | 2017-09-12 12:18:11 | 
| 122 | 2 | karnataka | ka  | sell | 2017-09-12 12:19:26 | 
| 124 | 3 | tamil nadu | tn  | buy | 2017-09-12 12:20:30 | 
| 127 | 4 | andrapradesh | ap  | buy | 2017-09-12 12:26:26 | 
+-------+----+--------------+--------+-------+---------------------+ 
+0

try SELECT prix, id, état, symbole, trade, created_date du groupe share5 par ID DESC; –

Répondre

0

Pour obtenir les dernières ligne de chaque groupe, vous pouvez utiliser requête suivante

select t.* 
from share5 t 
join (
    select Id,max(created_date) created_date 
    from share5 
    group by Id 
) t1 using(Id,created_date) 

DEMO

+1

Ses remerciements pour le code khalid –

0

Il semble que vous manquez order_by, vous pouvez essayer

SELECT price,id,state,symbol,trade,created_date from share5 group by id order by created_date desc; 
0

Essayez ceci:

SELECT price,id,state,symbol,trade,created_date from share5 where created_date = (select max(created_date)from Customers) group by id,price,state,symbol,trade,created_date