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

  • Max Lee

    Max Lee

    18 AĞUSTOS 2006
  • Tomas N

    Tomas N

    14 Kasım 2010
  • Vicious Computers

    Vicious Comp

    14 EKİM 2006