2017-12-06 2 views
2

Ich habe eine Tabelle wie dieseMysql erhält Zeilennummer

+------+----------+------------+ 
| id | 1_value | 2_value | 
+------+----------+------------+ 
| 3 | foo1 | other | 
| 10 | fooX | stuff | 
| 13 | fooJ | here  | 
| 22 | foo7 | and  | 
| 31 | foou | here  | 
+------+----------+------------+ 

Was ich will bekommen, ist die Zeilennummer haben

Ich habe versucht, so etwas wie diese

SELECT id, @curRow := @curRow + 1 AS row_number 
FROM table 
JOIN (SELECT @curRow := 0) r 
zu tun

und es in der Tat arbeiten ...

+------+--------------+ 
| id | row_number | 
+------+--------------+ 
| 3 | 1   | 
| 10 | 2   | 
| 13 | 3   | 
| 22 | 4   | 
| 31 | 5   | 
+------+--------------+ 

Was aber, wenn ich versuche, eine bestimmte Zeile auszuwählen?

SELECT id, @curRow := @curRow + 1 AS row_number 
FROM srwk_esp_registration 
JOIN (SELECT @curRow := 0) r 
WHERE ID = 22 

In diesem Fall ist row_number 1, aber es sollte 4.

Wie kann ich diese acheive?

Antwort

2

Versuchen mit Sub - query:

SELECT * 
FROM (
    SELECT id 
     ,@curRow : = @curRow + 1 AS row_number 
    FROM srwk_esp_registration 
    JOIN (
     SELECT @curRow : = 0 
     ) r 
    ) sub 
WHERE sub.ID = 22 
+1

es funktioniert, müssen nur beheben: = mit: = – Dudo1985

Verwandte Themen