09/10/2018, 18:14

Tìm Vị trí trong MYSQL

Mình đang dùng Mysql. Mình muốn làm chuyện này. Anh chị nào biết xin chỉ giúp.
Giả sử ta có table A(ID,name). Hỏi chứ nếu ta có một ID=3 và dòng có ID=3 ở vị trí thứ 2 trong table thì viết câu lệnh SQL làm sao để SQL trả về vị trí của dòng chứ ID đó trong table (tức là trả về 2)??
fantastic viết 20:26 ngày 09/10/2018
Nếu ID của bạn xếp theo thứ tự từ bé đến lớn thì tớ có "chiêu" này (nhưng mà rất hao tài nguyên):
- Dùng một vòng lặp đọc từ giá trị bé nhất của table (tức là giá trị đầu tiên), mỗi lần đọc qua thì tăng một biến tạm nào đó lên 1 đơn vị, đến khi nào giá trị đang đọc của table bằng giá trị muốn tìm thì dừng. Xuất biến tạm sẽ ra được vị trí của dòng đó...
Hynohun viết 20:25 ngày 09/10/2018
$query = mysql_query('SELECT * FROM table');
$record_at_2 = mysql_result($query,1,"name"); // lưu ý số 1 tức là vị trí của record thứ 2 (số 0 là vị trí của record đầu tiên)
dtt_vn viết 20:18 ngày 09/10/2018
Xong rồi, em đã tìm ra được phương pháp, nói ra cho anh chị em tham khảo luôn
SELECT (Value IN (ID)) AS T_Index FROM tb_A WHERE (T_ID IN (ID) >0) ORDER BY T_INDEX DESC LIMIT 0,1

Giải thích: Chỉ lấy một dòng đầu tiên ra thôi. Phép IN là phép so sánh có trong tập hợp hay không, trả về vị trí, trả về 0 nếu không có do đó vị trí luôn >0, vị trí thực sẽ là vị trí trả về -1. Do mysql có support optimize code, do đó, 3 phép In trong câu lệnh chỉ được tính toán 1 lần. Bạn thay Value bằng giá trị của ID cần tìm vị trí
fantastic viết 20:26 ngày 09/10/2018
Cách thì nhiều cách, tùy thuộc vào trình độ mỗi người, như mình thì mới bít sơ sơ nên dài dòng...
Bài liên quan
0