Hướng dẫn select the first row in mysql - chọn hàng đầu tiên trong mysql

44

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Nếu tôi có một truy vấn như

select * from tbl_foo where name = 'sarmen'

Và bảng này có nhiều phiên bản của name = sarmen Làm cách nào tôi có thể gán số hàng cho mỗi hàng mà không phải tạo một cột mà tự động tự động? Tôi có một lý do cho những gì tôi đang làm và không cần một col tự động trong ví dụ của tôi.

Vì vậy, nếu mỗi hàng được chỉ định một số hàng ảo thông qua SQL hoặc có thể PHP, tôi sẽ có thể in ra hàng đầu tiên hoặc hàng cuối cùng bất cứ lúc nào tôi cần.

thnx

hỏi ngày 9 tháng 7 năm 2010 lúc 23:59Jul 9, 2010 at 23:59

0

Để chỉ trả về một hàng, hãy sử dụng LIMIT 1:

SELECT *
FROM tbl_foo
WHERE name = 'sarmen'
LIMIT 1

Không có ý nghĩa gì khi nói 'hàng đầu tiên' hoặc 'hàng cuối cùng' trừ khi bạn có mệnh đề ORDER BY. Giả sử bạn thêm một mệnh đề ORDER BY sau đó bạn có thể sử dụng giới hạn theo các cách sau:

  • Để có được hàng đầu tiên sử dụng LIMIT 1.
  • Để có được hàng thứ 2, bạn có thể sử dụng giới hạn với phần bù:
    SELECT *
    FROM tbl_foo
    WHERE name = 'sarmen'
    LIMIT 1
    
    0.
  • Để có được hàng cuối cùng đảo ngược thứ tự [thay đổi ASC thành DESC hoặc ngược lại] sau đó sử dụng LIMIT 1.

Mark Amery

133K78 Huy hiệu vàng395 Huy hiệu bạc443 Huy hiệu Đồng78 gold badges395 silver badges443 bronze badges

Đã trả lời ngày 10 tháng 7 năm 2010 lúc 0:02Jul 10, 2010 at 0:02

Mark Byersmark ByersMark Byers

783K185 Huy hiệu vàng1552 Huy hiệu bạc1440 Huy hiệu đồng185 gold badges1552 silver badges1440 bronze badges

9

Bạn đã không chỉ định cách xác định thứ tự, nhưng điều này sẽ cung cấp cho bạn giá trị xếp hạng trong MySQL:

SELECT t.*,
       @rownum := @rownum +1 AS rank
  FROM TBL_FOO t
  JOIN [SELECT @rownum := 0] r
 WHERE t.name = 'sarmen'

Sau đó, bạn có thể chọn ra những hàng bạn muốn, dựa trên giá trị xếp hạng.

Đã trả lời ngày 10 tháng 7 năm 2010 lúc 0:04Jul 10, 2010 at 0:04

OMG Poniesomg PoniesOMG Ponies

318K79 Huy hiệu vàng511 Huy hiệu bạc494 Huy hiệu đồng79 gold badges511 silver badges494 bronze badges

3

Bạn có thể nhận được tổng số hàng chứa một tên cụ thể bằng cách sử dụng:

SELECT COUNT[*] FROM tbl_foo WHERE name = 'sarmen'

Với số lượng, bây giờ bạn có thể nhận được hàng thứ n bằng cách sử dụng:

SELECT * FROM tbl_foo WHERE name = 'sarmen' LIMIT [n - 1], 1

Trong đó 1

Example::

Nhận hàng thứ 3

SELECT * FROM tbl_foo WHERE name = 'sarmen' LIMIT 2, 1

Đã trả lời ngày 10 tháng 7 năm 2010 lúc 0:11Jul 10, 2010 at 0:11

AnaxanaxAnax

8,9025 Huy hiệu vàng33 Huy hiệu bạc67 Huy hiệu Đồng5 gold badges33 silver badges67 bronze badges

Làm cách nào để chọn 5 hàng đầu tiên trong MySQL?

SQL TOP, GIỚI HẠN, LẠI ĐẦU TIÊN HOẶC ROWNUM.

SQL Server / MS Access Cú pháp: chọn Số hàng đầu | phần trăm cột_name [s] từ TABEL_NAME. ....

Cú pháp MySQL: Chọn Cột_Name [S] từ Table_Name. .... Not all database systems support the

SELECT *
FROM tbl_foo
WHERE name = 'sarmen'
LIMIT 1
4 clause. MySQL supports the
SELECT *
FROM tbl_foo
WHERE name = 'sarmen'
LIMIT 1
5 clause to select a limited number of records, while Oracle uses
SELECT *
FROM tbl_foo
WHERE name = 'sarmen'
LIMIT 1
6 and
SELECT *
FROM tbl_foo
WHERE name = 'sarmen'
LIMIT 1
7.

SQL Server / MS Access Cú pháp:

Chọn số hàng đầu | phần trăm cột_name [s] từ điều kiện Table_Namewhere;
FROM table_name
WHERE condition;

Cú pháp MySQL:

Chọn Cột_Name [S] từ Số giới hạn điều kiện của Table_Namewhere;
FROM table_name
WHERE condition
LIMIT number;

Cú pháp của Oracle 12:

Chọn cột_name [s] từ bảng_nameorder bằng cột_name [s] chỉ tìm nạp các hàng số đầu tiên;
FROM table_name
ORDER BY column_name[s]
FETCH FIRST number ROWS ONLY;

Cú pháp oracle cũ hơn:

Chọn Cột_Name [S] từ Table_Name WHERE ROWNUM
FROM table_name
WHERE ROWNUM

Chủ Đề