2012-04-02 29 views
6

Làm cách nào để kết hợp (xếp theo chiều dọc) 3 truy vấn sau vào một truy vấn trả về 100 hàng, 50 hàng từ loại 1, 25 từ danh mục 2, 25 từ danh mục 3 tất cả đã chọn ngẫu nhiên. Tôi đã thử UNION nhưng dường như không hoạt động.ngăn xếp theo chiều dọc các kết quả MySQL trong truy vấn đơn

select * from table where category_id = 1 order by rand() limit 50; 

select * from table where category_id = 2 order by rand() limit 25; 

select * from table where category_id = 3 order by rand() limit 25; 
+3

A 'UNION ALL' nên làm việc nếu bạn gửi kèm mỗi phần trong parens '(SELECT ...) UNION ALL (SELECT ...) ...' –

Trả lời

6

Để áp dụng ORDER BY hoặc LIMIT cho một cá nhân SELECT, đặt mệnh đề bên trong dấu ngoặc đơn mà kèm theo SELECT:

(select * from table where category_id = 1 order by rand() limit 50) 
UNION ALL 
(select * from table where category_id = 2 order by rand() limit 25) 
UNION ALL 
(select * from table where category_id = 3 order by rand() limit 25); 
3

Điều bạn đang tìm kiếm là cú pháp UNION ALL (liên kết đến tài liệu MySQL).

select * from table where category_id = 1 order by rand() limit 50 
UNION ALL 
select * from table where category_id = 2 order by rand() limit 25 
UNION ALL 
select * from table where category_id = 3 order by rand() limit 25; 

chỉnh sửa: phẩy loại bỏ, nhờ @ Matt Fenwick

+1

Trừ dấu chấm phẩy. –

+0

khi tôi đưa ra các dấu chấm phẩy, tôi chỉ nhận được 25 hàng tất cả từ category_id = 1 –

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