আইটেমগুলি বাছাই করা থাকলে আমি কি একটি নির্বাচনী বিবৃতি চালাতে পারি এবং সারি নম্বরটি পেতে পারি?
আমার এই মত একটি টেবিল আছে:
mysql> describe orders;
+-------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------+----------------+
| orderID | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| itemID | bigint(20) unsigned | NO | | NULL | |
+-------------+---------------------+------+-----+---------+----------------+
এরপরে আইডি দ্বারা অর্ডার সংখ্যা পেতে আমি এই ক্যোয়ারীটি চালাতে পারি:
SELECT itemID, COUNT(*) as ordercount
FROM orders
GROUP BY itemID ORDER BY ordercount DESC;
এটি আমাকে এই itemID
জাতীয় টেবিলে প্রত্যেকটির একটি গণনা দেয় :
+--------+------------+
| itemID | ordercount |
+--------+------------+
| 388 | 3 |
| 234 | 2 |
| 3432 | 1 |
| 693 | 1 |
| 3459 | 1 |
+--------+------------+
আমি সারি নম্বরটিও পেতে চাই, তাই আমি বলতে পারি যে itemID=388
প্রথম সারিতে 234
এটি দ্বিতীয়, ইত্যাদি ( আমি জানি যে আমি জাভাতে এটি করতে পারব যখন ফলাফলটি আবার ফিরে আসবে, তবে আমি ভাবছিলাম যে এসকিউএলকে খাঁটিভাবে এটি পরিচালনা করার কোনও উপায় ছিল কিনা।
হালনাগাদ
র্যাঙ্ক নির্ধারণ ফলাফল ফলাফলের সাথে এটি যুক্ত করে, তবে সঠিকভাবে অর্ডার করা হয়নি:
mysql> SET @rank=0;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @rank:=@rank+1 AS rank, itemID, COUNT(*) as ordercount
-> FROM orders
-> GROUP BY itemID ORDER BY rank DESC;
+------+--------+------------+
| rank | itemID | ordercount |
+------+--------+------------+
| 5 | 3459 | 1 |
| 4 | 234 | 2 |
| 3 | 693 | 1 |
| 2 | 3432 | 1 |
| 1 | 388 | 3 |
+------+--------+------------+
5 rows in set (0.00 sec)
ORDER BY rank ASC
তম র্যাঙ্কে অর্ডার করতে চান তবে ব্যবহার করুন (ASCend ক্রমে র্যাঙ্ক অনুসারে ক্রম ক্রম)। আমি অনুমান করি যে আপনি যা বোঝাতে চেয়েছেন তবে সঠিকভাবে অর্ডার করা হয়নি