Tôi đang cố gắng viết một truy vấn dọc theo những dòng này:
select *
from tbl
where
col1 = 1
and col2 = 2
and col3 = 3
order by
...
;
Tôi muốn đầu tiên tất cả các kết quả trong đó cả 3 WHERE
điều kiện khớp (3/3), sau đó tất cả các kết quả trong đó có 2 điều kiện khớp (2/3) và cuối cùng là kết quả trong đó bất kỳ 1 điều kiện nào khớp với (1/3).
Mỗi trong số 3 bộ kết quả này cần phải được sắp xếp theo (col4, col5, col6)
.
Tôi có thể làm điều đó trong một truy vấn không?
Ví dụ:
mẫu http://img708.imageshack.us/img708/1646/sampletableresult1.jpg
Script để tạo dữ liệu thử nghiệm:
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MyTable]') AND type in (N'U'))
DROP TABLE [dbo].[MyTable]
GO
CREATE TABLE dbo.MyTable
(
col1 INT
, col2 INT
, col3 INT
, col4 INT
, col5 INT
, col6 INT
)
GO
INSERT dbo.MyTable (col1, col2, col3, col4, col5, col6)
SELECT 1,2,3,2,1,1 UNION ALL
SELECT 1,2,30,1,1,1 UNION ALL SELECT 1,20,30,1,1,1 UNION ALL
SELECT 10,20,3,1,1,1 UNION ALL SELECT 10,2,30,1,1,1 UNION ALL
SELECT 10,2,3,1,1,1 UNION ALL SELECT 10,20,30,1,1,1 UNION ALL
SELECT 1,2,3,1,1,1 UNION ALL SELECT 1,2,3,1,2,2 UNION ALL
SELECT 1,2,3,1,2,3 UNION ALL SELECT 1,20,3,1,1,1
GO
nếu có thể mà không cần 3! tham gia mẫu có 3 col đầu tiên, nhưng trên thực tế, nó còn hơn thế
—
forX
Vì vậy, bạn muốn tìm tất cả các hàng trong đó cả 3 điều kiện khớp nhau, trong đó 2 điều kiện bất kỳ khớp với nhau, sau đó bất kỳ 1 điều kiện nào khớp và đặt tất cả các kết quả lại với nhau, được sắp xếp theo col4, 5 và 6. Điều đó có đúng không?
—
Nick Chammas
vâng, tôi biết, tôi đã tìm kiếm một cách khác, bởi vì nó hơn 3 col
—
forX
tốt, hiện tại quyền truy cập của nó (Tôi đang chờ để nhận db máy chủ sql của tôi)
—
forX
Nếu cuối cùng bạn sẽ sử dụng SQL Server, hãy cài đặt phiên bản express . Làm sạch đường dẫn nâng cấp lên phiên bản trả phí và không xử lý các đặc điểm cú pháp trong Access.
—
Mark Storey-Smith