Làm thế nào truy vấn dưới đây có thể được điều chỉnh để trở lại lúc nào cũng là thành viên với MemberID = 'xxx' như dòng đầu tiênĐiều chỉnh truy vấn SQL để buộc một bản ghi xuất hiện đầu tiên?
SELECT * FROM viên
Làm thế nào truy vấn dưới đây có thể được điều chỉnh để trở lại lúc nào cũng là thành viên với MemberID = 'xxx' như dòng đầu tiênĐiều chỉnh truy vấn SQL để buộc một bản ghi xuất hiện đầu tiên?
SELECT * FROM viên
select * from Members
order by case when MemberID = XXX then 0 else 1 end
này nên làm việc và nó cũng sẽ cho phép bạn đặt các hạng mục còn lại bởi MemberID (Giả sử xxx = 12 trong ví dụ này)
SELECT *
FROM Members
ORDER BY CASE WHEN MemberID=12 THEN NULL ELSE isnull(MemberID,0) END
Nếu cột memberID không thể chứa null, bạn có thể loại bỏ điều này có thể hoạt động tốt hơn một chút.
SELECT *
FROM Members
ORDER BY CASE WHEN MemberID=12 THEN NULL ELSE MemberID END
SELECT
CASE WHEN MemberID = 'xxx' AS 1 ELSE 0 END CASE AS magic,
*
FROM Members
ORDER BY magic DESC
Cú pháp có thể thay đổi tùy theo năm db, nhưng tôi hy vọng bạn sẽ có được ý tưởng.
thử điều này:
SELECT * FROM Members
ORDER BY IF(x.MemberId = XXX, -1, ABS(x.MemberId))
Điều này sẽ không cho kết quả nào .. –
SELECT * FROM `Members` WHERE `MemberID` = '[ID]' LIMIT 1 UNION SELECT * FROM `Members`
này nên làm việc. Thử nghiệm trên cá thể cơ sở dữ liệu của tôi. ID được chọn luôn là đầu tiên.
Điều này không đảm bảo cung cấp kết quả chính xác. – Magnus
Một giải pháp mạnh mẽ hơn, nếu bạn có nhiều bản ghi phải được thả nổi lên trên cùng hoặc nếu bạn có một thứ tự cụ thể cho nhiều bản ghi, hãy thêm cột ResultOrder vào bảng của bạn hoặc thậm chí một bảng khác MemberOrder (memberid, kết quả). Điền vào đơn đặt hàng kết quả có số lượng lớn và ...
Select m.*
From Members m
Left Join MemberOrder mo on m.MemberID=mo.MemberID
Order by coalesce(mo.resultorder, 0) DESC
Nền tảng DB nào? – JohnFx
SQL Server 2008 – SShebly