Tôi muốn chọn 5 bản ghi cuối cùng từ một bảng trong SQL Server mà không cần sắp xếp bảng theo thứ tự tăng dần hoặc giảm dần.Làm cách nào để chọn 5 hàng cuối cùng trong một bảng mà không cần sắp xếp?
Trả lời
Không có đơn đặt hàng, điều này là không thể. Điều gì định nghĩa "đáy"? Sau đây sẽ chọn 5 hàng theo cách chúng được lưu trữ trong cơ sở dữ liệu.
SELECT TOP 5 * FROM [TableName]
Phải, bạn cũng có thể thêm "đơn đặt hàng theo colx desc" vào cuối 5 tùy thuộc vào chỉ mục. I E. đầu 5 * ĐƯỢC * dưới cùng 5 nếu bạn đảo ngược thứ tự. –
Điều này không chính xác. Truy vấn này sẽ chọn 5 hàng ** nhưng không phải (luôn luôn) ** theo cách chúng được lưu trữ trong cơ sở dữ liệu. –
Bạn có thể truy xuất chúng từ bộ nhớ.
Vì vậy, đầu tiên bạn nhận được các hàng trong một Số liệu, và sau đó nhận được 5 cuối cùng của Số liệu.
Đây là chỉ là về truy vấn kỳ lạ nhất mà tôi từng viết, nhưng tôi khá chắc chắn rằng nó được "cuối cùng 5" hàng từ một bảng mà không đặt hàng:
select *
from issues
where issueid not in (
select top (
(select count(*) from issues) - 5
) issueid
from issues
)
Lưu ý rằng điều này làm cho sử dụng SQL Server 2005 có khả năng chuyển một giá trị vào mệnh đề "top" - nó không hoạt động trên SQL Server 2000.
Nếu cuối cùng, bạn có nghĩa là theo thứ tự của khóa cụm, sau đó tôi là xa mà không làm việc –
Tôi đã thử nghiệm điều này trên một bảng mà không có một chỉ số nhóm, và nó trả về năm hàng cuối cùng mà tôi nhận được khi thực hiện "chọn * từ các vấn đề" đơn giản. –
Và chỉ cần thử nó trên một bảng với một chính "int int" chính, và nó đã làm việc ở đó quá. Đã cho tôi hàng "năm cuối". –
Vâng, "năm hàng cuối cùng" thực sự là năm hàng cuối cùng tùy thuộc vào chỉ số nhóm của bạn. Chỉ số nhóm của bạn, theo định nghĩa, là cách mà các hàng được sắp xếp. Vì vậy, bạn thực sự không thể nhận được "năm hàng cuối cùng" mà không cần một số đơn đặt hàng. Bạn có thể, tuy nhiên, có được năm hàng cuối cùng vì nó liên quan đến chỉ số nhóm.
SELECT TOP 5 * FROM MyTable
ORDER BY MyCLusteredIndexColumn1, MyCLusteredIndexColumnq, ..., MyCLusteredIndexColumnN DESC
Có một trick ích mà làm việc ở một số cơ sở dữ liệu để đặt hàng trong trật tự cơ sở dữ liệu,
SELECT * FROM TableName ORDER BY đúng
Rõ ràng, điều này có thể làm việc kết hợp với bất kỳ khác các đề xuất được đăng ở đây để lại kết quả theo thứ tự "thứ tự mà chúng xuất hiện trong cơ sở dữ liệu", trong một số cơ sở dữ liệu, là thứ tự chúng được sửa đổi lần cuối.
Cách câu hỏi của bạn bị làm cho âm thanh như bạn nghĩ phải vất vả ically khu nghỉ mát dữ liệu trong bảng để có được nó trở lại theo thứ tự bạn muốn. Nếu vậy, đây không phải là trường hợp, mệnh đề ORDER BY tồn tại cho mục đích này. Thứ tự vật lý trong đó các hồ sơ được lưu trữ vẫn không thay đổi khi sử dụng ORDER BY. Các bản ghi được sắp xếp trong bộ nhớ (hoặc trong không gian đĩa tạm thời) trước khi chúng được trả về.
Lưu ý rằng thứ tự ghi nhận được trả lại không được bảo đảm mà không sử dụng mệnh đề ORDER BY. Vì vậy, trong khi bất kỳ gợi ý nào ở đây có thể hoạt động, không có lý do gì để nghĩ rằng chúng sẽ tiếp tục hoạt động, bạn cũng không thể chứng minh rằng chúng hoạt động trong mọi trường hợp với cơ sở dữ liệu hiện tại của bạn. Điều này là do thiết kế - tôi giả định nó là để cung cấp cho cơ sở dữ liệu tự do làm như nó sẽ với các hồ sơ để có được hiệu suất tốt nhất trong trường hợp không có thứ tự rõ ràng được chỉ định.
Giả sử bạn muốn 5 hồ sơ cuối cùng được sắp xếp theo tên trường trong thứ tự tăng dần, bạn có thể làm một cái gì đó như thế này, mà nên làm việc trong hoặc SQL 2000 hoặc 2005:
select Name
from (
select top 5 Name
from MyTable
order by Name desc
) a
order by Name asc
Điều này sẽ được đánh dấu là câu trả lời chính xác (và tương thích nhất). – AshesToAshes
Nếu bạn biết có bao nhiêu hàng sẽ có tổng số bạn có thể sử dụng hàm ROW_NUMBER(). Dưới đây là một examble từ MSDN (http://msdn.microsoft.com/en-us/library/ms186734.aspx)
USE AdventureWorks;
GO
WITH OrderedOrders AS
(
SELECT SalesOrderID, OrderDate,
ROW_NUMBER() OVER (ORDER BY OrderDate) AS 'RowNumber'
FROM Sales.SalesOrderHeader
)
SELECT *
FROM OrderedOrders
WHERE RowNumber BETWEEN 50 AND 60;
Giả sử bạn có một chỉ mục trên id, đây sẽ là nhanh như chớp:
SELECT * FROM [MyTable] WHERE [id] > (SELECT MAX([id]) - 5 FROM [MyTable])
Điều này chỉ an toàn nếu bạn chưa xóa bất kỳ bản ghi nào. I E. nếu id tối đa = 100, nhưng bạn đã xóa bản ghi 99, bạn sẽ chỉ kết thúc với 4 bản ghi, chứ không phải là 5. – Amber
select *
from table
order by empno(primary key) desc
fetch first 5 rows only
Như đã viết, chọn tất cả các hàng theo thứ tự giảm dần, không chỉ trước tiên 5. – JYelton
@JYelton - No it doesn ' t. Chỉ hợp lệ trong SQL Server 2012 và bỏ qua yêu cầu "không phân loại". –
- Bạn cần phải đếm số hàng bên trong bảng (nói rằng chúng tôi có 12 hàng)
- rồi trừ 5 hàng khỏi chúng (chúng tôi hiện đang ở 7)
chọn * nơi index_column> 7
select * from users where user_id > ((select COUNT(*) from users) - 5)
bạn có thể ra lệnh cho họ ASC hoặc DESC
Nhưng khi sử dụng mã này
select TOP 5 from users order by user_id DESC
nó sẽ không được ra lệnh một cách dễ dàng.
Lấy đếm bảng mà
select count(*) from TABLE
select top count * from TABLE where 'primary key row' NOT IN (select top (count-5) 'primary key row' from TABLE)
select * from table limit 5 offset (select count(*) from table) - 5;
cuối 5 hàng lấy trong mysql
Truy vấn này làm việc một cách hoàn hảo
SELECT * FROM (SELECT * FROM recharge ORDER BY sno DESC LIMIT 5)sub ORDER BY sno ASC
hoặc
select sno from(select sno from recharge order by sno desc limit 5) as t where t.sno order by t.sno asc
Trong SQL Server 2012 bạn có thể làm điều này:
Declare @Count1 int ;
Select @Count1 = Count(*)
FROM [Log] AS L
SELECT
*
FROM [Log] AS L
ORDER BY L.id
OFFSET @Count - 5 ROWS
FETCH NEXT 5 ROWS ONLY;
Khi số hàng trong bảng là ít hơn 5 câu trả lời của Matt Hamilton và msuvajac là không đúng. Bởi vì giá trị số lượng hàng TOPN có thể không âm.
Một ví dụ tuyệt vời có thể được tìm thấy Here.
tôi đang sử dụng mã này:
select * from tweets where placeID = '$placeID' and id > (
(select count(*) from tweets where placeID = '$placeID')-2)
kiếm 5 hồ sơ từ các hồ sơ cuối cùng bạn có thể sử dụng này,
SELECT *
FROM Table Name
WHERE ID <= IDENT_CURRENT('Table Name')
AND ID >= IDENT_CURRENT('Table Name') - 5
DECLARE @MYVAR NVARCHAR(100)
DECLARE @step int
SET @step = 0;
DECLARE MYTESTCURSOR CURSOR
DYNAMIC
FOR
SELECT col FROM [dbo].[table]
OPEN MYTESTCURSOR
FETCH LAST FROM MYTESTCURSOR INTO @MYVAR
print @MYVAR;
WHILE @step < 10
BEGIN
FETCH PRIOR FROM MYTESTCURSOR INTO @MYVAR
print @MYVAR;
SET @step = @step + 1;
END
CLOSE MYTESTCURSOR
DEALLOCATE MYTESTCURSOR
Hãy thử điều này, nếu bạn không có một khóa chính hoặc cột giống hệt nhau:
select [Stu_Id],[Student_Name] ,[City] ,[Registered],
RowNum = row_number() OVER (ORDER BY (SELECT 0))
from student
ORDER BY RowNum desc
- 1. Chọn hàng cuối cùng trong bảng SQL
- 2. Chọn hàng đầu tiên và cuối cùng từ group_concat khi nhóm ngày sắp xếp được
- 3. Sắp xếp các hàng của bảng HTML ở trên cùng
- 4. Jquery Nhận hàng cuối cùng của bảng trong yếu tố cuối cùng trong một loạt
- 5. Cách sắp xếp/sắp xếp bảng phụ thuộc 2D
- 6. mysql chọn từ n hàng cuối cùng
- 7. Làm thế nào để CHỌN 10 hàng cuối cùng của một bảng SQL không có trường ID?
- 8. Làm cách nào để xóa tập hợp hàng đầu tiên hoặc cuối cùng theo kiểu động
- 9. Bảng dữ liệu chọn 5 hàng đầu
- 10. Làm thế nào để chọn TD đầu tiên và cuối cùng trong một hàng?
- 11. MYSQL: làm thế nào để "sắp xếp lại" một bảng
- 12. Làm cách nào để chọn hàng con cuối cùng của mối quan hệ cha/con bằng cách sử dụng SQL
- 13. Chọn một hàng mà không cần mục trùng lặp
- 14. MYSQL Chọn từ bảng, nhận mới nhất/10 hàng cuối cùng trong bảng
- 15. Cách sắp xếp nhiều bảng trong JFrame
- 16. Sắp xếp một Bảng [] trong Lua
- 17. Làm cách nào để định vị một DataGridView cho một hàng cụ thể (để hàng đã chọn ở trên cùng)
- 18. Lấy ô không trống cuối cùng trong một hàng
- 19. Làm cách nào để sắp xếp một mảng trong Scala?
- 20. Sắp xếp lại() không sắp xếp lại một cách chính xác một biến tố trong ggplot
- 21. Chọn MySQL, cột có cùng tên từ nhiều bảng, sắp xếp theo một cột khác có cùng tên
- 22. Làm cách nào để xử lý bảng sắp xếp và thêm dữ liệu song song?
- 23. Làm thế nào để chọn hàng đầu tiên và cuối cùng trong một biến nhóm trong một khung dữ liệu?
- 24. Sắp xếp bảng HTML
- 25. Làm cách nào để sắp xếp một data.frame chỉ với một cột mà không làm mất các tên gọi?
- 26. Lưu trữ bảng Azure có bản ghi cuối cùng
- 27. Làm cách nào để có tùy chọn được chọn cuối cùng từ nhiều lựa chọn?
- 28. Cách sắp xếp/sắp xếp dữ liệu trong Riak?
- 29. jquery tablesorter sắp xếp các ô trống trong ô cuối cùng
- 30. Làm cách nào để sắp xếp một mảng với coffeescript?
@Ganesh - bạn nên cụm từ bạn r câu hỏi như một câu hỏi thực sự, không phải là một tuyên bố "Tôi cần giúp đỡ". – paxdiablo