SORU
27 HAZİRAN 2010, Pazar


MySQL ile nasıl bir sütun tablo içinde kayıt dizini içeren oluşturabilirsiniz?

Bir sorgudan gerçek satır sayısı almak için herhangi bir yolu var mı?

Bir tablo bir puan alan adında league_girl aradı sipariş edebilmek istiyorum; kullanıcı adı ve o kullanıcı adı gerçek satır pozisyonuna dönün.

Belirli bir kullanıcı, yani nerede olduğunu söylemem için kullanıcılar rütbe istiyorum. Joe, yani 200 konum 100

User Score Row
Joe  100    1
Bob  50     2
Bill 10     3

Burada bir kaç çözüm gördüm ama çoğu ve onları aslında satır sayısını döndürmek hiçbiri çalıştım.

Bu denedim:

SELECT position, username, score
FROM (SELECT @row := @row   1 AS position, username, score 
       FROM league_girl GROUP BY username ORDER BY score DESC) 

Türetilmiş gibi

...ama satır konumuna döndürmek için görünmüyor.

Herhangi bir fikir?

CEVAP
27 HAZİRAN 2010, Pazar


Aşağıdaki deneyebilirsiniz:

SELECT  l.position, 
        l.username, 
        l.score,
        @curRow := @curRow   1 AS row_number
FROM    league_girl l
JOIN    (SELECT @curRow := 0) r;

JOIN (SELECT @curRow := 0) parçası SET ayrı bir komut gerektirmeden değişken başlatma sağlar.

Case Test:

CREATE TABLE league_girl (position int, username varchar(10), score int);
INSERT INTO league_girl VALUES (1, 'a', 10);
INSERT INTO league_girl VALUES (2, 'b', 25);
INSERT INTO league_girl VALUES (3, 'c', 75);
INSERT INTO league_girl VALUES (4, 'd', 25);
INSERT INTO league_girl VALUES (5, 'e', 55);
INSERT INTO league_girl VALUES (6, 'f', 80);
INSERT INTO league_girl VALUES (7, 'g', 15);

Test sorgu:

SELECT  l.position, 
        l.username, 
        l.score,
        @curRow := @curRow   1 AS row_number
FROM    league_girl l
JOIN    (SELECT @curRow := 0) r
WHERE   l.score > 50;

Sonuç:

 ---------- ---------- ------- ------------ 
| position | username | score | row_number |
 ---------- ---------- ------- ------------ 
|        3 | c        |    75 |          1 |
|        5 | e        |    55 |          2 |
|        6 | f        |    80 |          3 |
 ---------- ---------- ------- ------------ 
3 rows in set (0.00 sec)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • dougownsall

    dougownsall

    7 EKİM 2007
  • DrePwn

    DrePwn

    22 Temmuz 2011
  • MarinaHD2001

    MarinaHD2001

    7 ŞUBAT 2009