Mysql
 sql >> база данни >  >> RDS >> Mysql

Извадете стойностите на два реда в една и съща колона, като използвате Mysql group by ID

Вашите дати са неправилни. Когато поръчвате по тази колона, поръчвате първо по дни. Правилното подреждане е година-месец-ден. Използвайте правилния тип данни, дата-час или времеви печат. За да направите това, можете да направите следното:

alter table table1 add column d datetime;
update table1 set d = str_to_date(`Date`, '%d-%m-%Y %H:%i');
alter table table1 drop column `Date`;

Тогава заявката за получаване на желания резултат е:

SELECT ID, d, Value,
       IF(@ID=ID, Value - @prevV, 'N/A') AS diff,
       @row_number:=CASE WHEN @ID=ID THEN @row_number+1 ELSE 1 END AS row_number,

       @prevV := Value,
       @ID:=ID AS ID
FROM table1
, (SELECT @row_number:=0, @ID:='', @prevV := NULL) AS t 
ORDER BY id, d;

Всичко, което трябва да направите, е да добавите друга променлива, която да задържи стойността на предишния ред.

  • вижте как работи на живо в sqlfiddle
  • ето още един sqlfiddle за да покажете какво се случва, когато имате 3 реда на ID



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Не мога да пусна външен ключ в MySQL

  2. Как да използвате ядрото на AspNet.Identity в My Sql база данни

  3. Mysql създава база данни с ново местоположение на базата данни

  4. java.sql.SQLException:Не е намерен подходящ драйвер за jdbc:mysql://localhost:3306/dbname

  5. ред, като отнема твърде много време в mysql