26 Mart 2010, Cuma
MySQL satır seçmek numarası
Eğer öğeleri sıralanmış, bir select deyimi çalıştırın ve satır numarasını alabilir miyim?
Böyle bir tablo var:
mysql> describe orders;
------------- --------------------- ------ ----- --------- ----------------
| Field | Type | Null | Key | Default | Extra |
------------- --------------------- ------ ----- --------- ----------------
| orderID | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| itemID | bigint(20) unsigned | NO | | NULL | |
------------- --------------------- ------ ----- --------- ----------------
O zaman bu sorgu KİMLİĞİ tarafından sipariş numarasını almak için çalıştırabilirsiniz:
SELECT itemID, COUNT(*) as ordercount
FROM orders
GROUP BY itemID ORDER BY ordercount DESC;
Bu bana tablo şöyle: itemID
her bir sayı verir
-------- ------------
| itemID | ordercount |
-------- ------------
| 388 | 3 |
| 234 | 2 |
| 3432 | 1 |
| 693 | 1 |
| 3459 | 1 |
-------- ------------
Almak istiyorum satır sayısı, bu yüzden söyleyebilirim ki itemID=388
ilk satır 234
ikinci, vb (aslında rütbeli bir emir değil, sadece bir ham sayısı). Sonuç geri geldiğimde Java ile bunu yapabileceğimi biliyorum, ama eğer SQL tamamen çözmenin bir yolu varsa merak ettim.
Güncelleme
Rütbe sonuç kümesi ekler, ama düzgün sıralı değil ayarı:
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)
CEVAP
17 Aralık 2010, Cuma
SELECT @rn:=@rn 1 AS rank, itemID, ordercount
FROM (
SELECT itemID, COUNT(*) AS ordercount
FROM orders
GROUP BY itemID
ORDER BY ordercount DESC
) t1, (SELECT @rn:=0) t2;
Bunu Paylaş:
Nasıl başka bir tabloda eşleşen bir gi...
MySQL: bir sütun null olduğu satır seç...
MySQL dışındaki tüm sütunları seçmek?...
MySQL: en Hızlı satır sayısını saymak ...
n seçin mysql son satır...