Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

टेबल डिजाइन + एसक्यूएल प्रश्न

मुझे समझ नहीं आता कि आपको सिंथेटिक कुंजी की आवश्यकता क्यों है, इसलिए मैं इसके बजाय इस तालिका का उपयोग करूंगा:

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'
;

तारीख अंकगणितीय वाक्य रचना शायद गलत है लेकिन आपको इसका अंदाजा हो गया है

ऊपर देखें, ORDER BY curr.weight - prev.weight DESC जोड़ें और LIMIT N

अंतिम दो प्रश्नों के लिए:अनुमान न लगाएं, निष्पादन योजनाओं की जांच करें। (postgresql में EXPLAIN ANALYZE . है , mysql के बारे में पता नहीं) आप शायद पाएंगे कि आपको WHERE में भाग लेने वाले स्तंभों को अनुक्रमित करने की आवश्यकता है और JOIN , वे नहीं जो परिणाम सेट बनाते हैं।



  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. क्वेरी के आधार पर सभी पंक्तियों को एक सरणी में लाएं

  3. डेटा को एक टेबल से दूसरी टेबल में कॉपी करें और अतिरिक्त डेटा जोड़ें

  4. एक पंक्ति डालें और दौड़ की स्थिति से बचें (PHP/MySQL)

  5. ActiveRecord3 गतिरोध पुनः प्रयास करें