Hướng dẫn mysql return 0 if no rows - mysql trả về 0 nếu không có hàng

Giả sử tôi có chế độ xem MySQL sau:

create or replace view total_transactions(account_id, total) as
select
  t.account_id,
  ifnull(sum(t.value), 0) as total
from transactions t
where t.paid IS TRUE
group by t.bank_account_id;

Giả sử tài khoản chưa có bất kỳ giao dịch nào, tôi muốn chế độ xem trả về 0. Ngay bây giờ, nếu tôi thực hiện chọn như:

select * from total_transactions where account_id = 2060;

Và tài khoản 2060 không có bất kỳ giao dịch nào, nó sẽ không trả lại cho tôi, thay vì 0.

Làm thế nào tôi có thể sửa nó?

Cảm ơn trước.


CHỈNH SỬA

Tôi nghĩ nó có thể là một cái gì đó với ____ ____ 6 ...

Nếu tôi thực hiện truy vấn mà tôi đang sử dụng cho chế độ xem mà không có nhóm, thì nó hoạt động (trả về 0 ngay cả khi không có kết quả), nhưng nếu tôi sử dụng group by, nó sẽ không có:

select
  t.account_id,
  ifnull(sum(t.value), 0) as total
from transactions t
where t.paid IS TRUE
and account_id = 2060;

Trả lại 0, và

create or replace view total_transactions(account_id, total) as
select
  t.account_id,
  ifnull(sum(t.value), 0) as total
from transactions t
where t.paid IS TRUE
and account_id = 2060
group by t.bank_account_id;

Trả về một bộ trống.

Lý do hợp tác không hoạt động trong ví dụ của bạn là không có hàng để áp dụng chức năng đó. Như @akina đề xuất trong nhận xét của mình, bạn có thể giải quyết nó bằng cách sử dụng truy vấn của bạn như một trình tự phụ. Một cách khác là thêm một hàng với 0 là thời lượng (giả sử thời lượng dương) và sau đó chọn thời lượng lớn nhất:

SELECT MAX(On_leaves)
FROM (
    SELECT SUM(leave_duration) AS On_leaves 
    FROM emp_leave 
    WHERE DATE_FORMAT(start_date,'%Y-%m-%d')
        >=DATE_FORMAT(CURDATE(), '%Y-%m-%01') 
      AND DATE_FORMAT(end_date,'%Y-%m-%d')
        <=DATE_FORMAT(CURDATE(), '%Y-%m-%31') 
      AND em_id =724 
      AND leave_status= 'Approved'
   GROUP BY em_id -- is this correct?      

   UNION ALL

   SELECT 0 AS On_leaves
) AS T   

Tôi hơi nghi ngờ về nhóm của bạn theo điều khoản. Nếu bạn nhóm theo EM_ID, bạn có thể kết thúc với một vài khoản tiền, đó có phải là ý định của bạn không?

Sử dụng Date_Format trong các vị từ của bạn sẽ gây khó khăn cho việc sử dụng các chỉ mục và sẽ tốn kém. Nếu start_date, end_date là ngày, hãy xem xét xóa DATE_FORMAT

SQL Count Return 0 nếu không có hàng có ví dụ mã

Với bài viết này, chúng tôi sẽ kiểm tra một số trường hợp khác nhau về cách giải quyết số SQL trả về 0 nếu không có vấn đề về hàng.

Yes, COUNT() returns 0 if there were no matching rows.

Bằng cách nghiên cứu một loạt các ví dụ khác nhau, chúng tôi đã có thể tìm ra cách khắc phục số lượng SQL trả về 0 nếu không có hàng.

Làm thế nào để bạn hiển thị số không khi tính nếu không có bản ghi trong cơ sở dữ liệu?

Bạn có thể sử dụng isnull hoặc hợp tác: cả hai đều giống nhau với một sự khác biệt nhỏ. Isnull (param1, param2): chỉ có thể chứa 2 tham số và không có điều kiện nào có giá trị của nó.12-mar-2015

Hàm số SQL () trả về số lượng hàng trong bảng thỏa mãn các tiêu chí được chỉ định trong mệnh đề WHERE. Nó đặt số lượng hàng hoặc giá trị cột không null. Đếm () trả về 0 nếu không có hàng phù hợp.19-Aug-2022

Làm cách nào để thay thế chỗ trống bằng 0 trong SQL?

Cập nhật [Bảng] Đặt [cột] = 0 trong đó [cột] là null; Các giá trị NULL có thể được thay thế trong SQL bằng cách sử dụng cập nhật, đặt và nơi tìm kiếm một cột trong bảng cho null và thay thế chúng. Trong ví dụ trên, nó thay thế chúng bằng 0.

Làm cách nào để đếm một điều kiện trong SQL?

Đếm () với mệnh đề có mệnh đề được sử dụng thay vì mệnh đề nơi có hàm SQL Count (). Nhóm bằng cách có mệnh đề lấy lại kết quả cho một nhóm cụ thể của một cột, phù hợp với điều kiện được chỉ định trong mệnh đề có điều khoản.19-Aug-2022

Làm cách nào để tính là 0 trong SQL?

Đó là tất cả về loại tham gia. Sử dụng tham gia phù hợp là rất quan trọng khi bạn muốn đưa các số không trong tổng hợp đếm (). Nếu bây giờ bạn sử dụng số lượng hàm tổng hợp (), như trong mã ở trên, nó sẽ không tính các giá trị null và kết quả sẽ bằng 0.30-tháng 12-2021

Làm cách nào để sử dụng NVL trong SQL?

Chọn NVL (Nhà cung cấp_city, 'N/A') từ các nhà cung cấp; Câu lệnh SQL ở trên sẽ trả về 'N/A' nếu trường Nhà cung cấp_city chứa giá trị null. Nếu không, nó sẽ trả về giá trị nhà cung cấp_city.

Đếm () đếm giá trị null?

Đếm (biểu thức) không đếm các giá trị null.

Có số lượng (*) bao gồm null?

Số lượng ký hiệu (*) bao gồm các giá trị null trong tổng số. Số lượng ký hiệu (cột_name) chỉ xem xét các hàng trong đó cột chứa giá trị không null.

Chức năng đếm nào bỏ qua giá trị nào?

Giá trị null

Làm thế nào để bạn thay thế khoảng trống trong SQL?

Có hai cách để thay thế NULL bằng các giá trị trống trong SQL Server, function isNull () và Coalesce ().Cả hai hàm thay thế giá trị bạn cung cấp khi đối số là null giống như isnull (cột, '') sẽ trả về chuỗi trống nếu giá trị cột là null.

MySQL trở lại điều gì nếu không tìm thấy gì?

SQL - Trả về 0 khi kết quả trống.Hiển thị dữ liệu trong SSR.SQL Chọn một hàng mặc định nếu không tìm thấy kết quả.Thêm dữ liệu giả vào một cột trong SQL Server.Return 0 When results are empty. Display data in SSRS. sql select a default row if the result is not found. Adding dummy data to a column in SQL Server.

Có! = Làm việc trong mysql?

Các toán tử không bằng nhau trong MySQL hoạt động giống nhau để thực hiện thử nghiệm bất bình đẳng giữa hai biểu thức..

Có nghĩa là gì trong MySQL?

Biểu tượng trong MySQL giống như không bằng toán tử (! =).Cả hai đều cho kết quả trong Boolean hoặc Tinyint (1).Nếu điều kiện trở thành đúng, thì kết quả sẽ là 1 nếu không 0. Trường hợp 1 - sử dụng! =not equal to operator (!=). Both gives the result in boolean or tinyint(1). If the condition becomes true, then the result will be 1 otherwise 0. Case 1 − Using !=