Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

desain tabel + pertanyaan SQL

Saya tidak mengerti mengapa Anda membutuhkan kunci sintetis, jadi saya akan menggunakan tabel ini sebagai gantinya:

CREATE TABLE foodbar (
  user_id     INT NOT NULL
, created_at  date not null
, weight      double not null
, PRIMARY KEY (user_id, created_at)
);
SELECT curr.user_id, curr.weight - prev.weight
FROM foodbar curr, foodbar prev
WHERE curr.user_id = prev.user_id
  AND curr.created_at = CURRENT_DATE
  AND prev.created_at = CURRENT_DATE - INTERVAL '7 days'
;

sintaks aritmatika tanggal mungkin salah tetapi Anda mendapatkan idenya

lihat di atas, tambahkan ORDER BY curr.weight - prev.weight DESC dan LIMIT N

untuk dua pertanyaan terakhir:jangan berspekulasi, periksa rencana eksekusi. (postgresql memiliki EXPLAIN ANALYZE , tidak tahu tentang mysql) Anda mungkin perlu mengindeks kolom yang berpartisipasi dalam WHERE dan JOIN , bukan yang membentuk kumpulan hasil.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Di MySQL, mengapa aman mematikan innodb_support_xa untuk pembaruan utas tunggal?

  2. Cara Memindahkan Semua Database MySQL Dari Server Lama ke Server Baru

  3. Berikan izin pengguna untuk hanya melihat tampilan MySQL dan tidak ada yang lain

  4. php data mysql acak

  5. Apakah ada alasan untuk khawatir tentang urutan kolom dalam tabel?