2011-01-21 35 views
5

Tôi cố gắng để có được kết quả cho các loại truy vấnCó cách nào để bao gồm bản sao từ truy vấn MySQL: select..from..where..id trong (danh sách)

SELECT * FROM table WHERE id IN(2,4,6,1,1,2) ORDER BY field (id,2,4,6,1,1,2) 

và tôi muốn nhận được kết quả theo thứ tự như danh sách bao gồm: các bản sao. Truy vấn trên giữ lại thứ tự nhưng cắt bỏ các bản sao. Tôi biết tôi có thể post-process các kết quả nhưng chỉ cần tự hỏi nếu có một cách dễ dàng hơn.

Cảm ơn

+1

tôi không hiểu câu hỏi của bạn. thứ tự bằng vẻ đáng ngờ, và khi bạn chọn từ đâu đó với mệnh đề trong, bạn không nên 'cắt bỏ' các bản sao - bạn sẽ nhận được tất cả. – Randy

+0

đặt hàng bằng cách hoạt động tốt. Và mysql nên và DOES cắt ra các dups - hãy thử nó. – prat

+0

Tôi cũng không rõ ràng về mục đích lặp lại ID 1 trong mệnh đề IN. Bạn có đang chờ truy vấn trả về hàng đó hai lần không? –

Trả lời

3

Điều này thực sự sẽ đạt được những gì bạn muốn:

SELECT * FROM table 
inner join (
    select 1 as sort, 2 as value union all 
    select 2, 4 union all 
    select 3, 6 union all 
    select 4, 1 union all 
    select 5, 1 union all 
    select 6, 2) X on X.value=table.id 
ORDER BY X.sort 
0

Bạn đang tạo truy vấn bằng cách nào? Nếu bạn không phản đối làm một chút công việc chân tay (mà bạn sau này có thể quấn trong một số code), đoàn thể nên giúp bạn có được những gì bạn cần:

select id from table where id in (1, 2, 4, 6) 
union all 
select id from table where id in (6, 8); 

Returns:

------ 
| id | 
|====| 
| 1 | 
| 2 | 
| 4 | 
| 6 | 
| 6 | 
| 8 | 
------ 

EDIT: Thực ra, tôi không nghĩ điều đó sẽ giúp bạn đặt hàng. Hãy để tôi chơi với điều này một số chi tiết.

+0

Đó là một công việc tốt đẹp xung quanh .. Tuy nhiên, tôi nghĩ rằng tôi sẽ đi với hậu xử lý kết quả. – prat

+0

Bạn sẽ phải chia danh sách thành các danh sách phụ uniq và chuyển từng danh sách con theo thứ tự theo trường (id, danh sách phụ) cho từng công đoàn. (Tôi giả định rằng mỗi câu lệnh chọn trong liên minh có thể nhận lệnh) .. nhưng như tôi đã nói, tôi sẽ để MySQL một mình tại thời điểm này :) – prat

+0

Vâng, tôi đã chơi với nó một chút, nhưng thứ tự trở nên gần như Không thể nào. – jerhinesmith

Các vấn đề liên quan