Tôi có truy vấn chọn mysql có nhómBởi. Tôi muốn đếm tất cả các hồ sơ sau nhóm theo tuyên bố. Có cách nào cho điều này trực tiếp từ mysql?đếm tổng số bản ghi sau khi nhóm chọn
cảm ơn.
Tôi có truy vấn chọn mysql có nhómBởi. Tôi muốn đếm tất cả các hồ sơ sau nhóm theo tuyên bố. Có cách nào cho điều này trực tiếp từ mysql?đếm tổng số bản ghi sau khi nhóm chọn
cảm ơn.
Bạn có thể sử dụng FOUND_ROWS():
SELECT <your_complicated_query>;
SELECT FOUND_ROWS();
Nó thực sự được dự định để sử dụng với LIMIT, cho bạn biết có bao nhiêu hàng sẽ được trả về mà không có LIMIT, nhưng có vẻ như nó hoạt động tốt cho các truy vấn không sử dụng LIMI T.
Đừng quên về 'SQL_CALC_FOUND_ROWS' sau' SELECT'. – sectus
thấy truy vấn này cho ví dụ:
truy vấn này được sử dụng để tìm các kỷ lục phòng có sẵn cho khách sạn, chỉ cần kiểm tra này
SELECT a.type_id, a.type_name, a.no_of_rooms,
(SELECT SUM(booked_rooms) FROM reservation
WHERE room_type = a.type_id
AND start_date >= '2010-04-12'
AND end_date <= '2010-04-15') AS booked_rooms,
(a.no_of_rooms - (SELECT SUM(booked_rooms)
FROM reservation
WHERE room_type = a.type_id
AND start_date >= '2010-04-12'
AND end_date <= '2010-04-15')) AS freerooms
FROM room_type AS a
LEFT JOIN reservation AS b
ON a.type_id = b.room_type
GROUP BY a.type_id ORDER BY a.type_id
Nếu điều duy nhất bạn cần là số sau khi nhóm, và bạn không muốn sử dụng 2 truy vấn riêng biệt để tìm câu trả lời. Bạn có thể làm điều đó với một truy vấn phụ như vậy ...
select count(*) as `count`
from (
select 0 as `doesn't matter`
from `your_table` yt
group by yt.groupfield
) sq
Lưu ý: Bạn phải thực sự chọn một cái gì đó trong truy vấn phụ, nhưng những gì bạn chọn không quan trọng
Lưu ý: Tất cả các bảng tạm thời phải có bí danh được đặt tên, do đó "sq" ở cuối
bạn sẽ đăng truy vấn? – Karthik
những gì bạn đã thử cho đến nay? – Salil