Hướng dẫn mysql return value if no result - mysql trả về giá trị nếu không có kết quả

Tôi có loại truy vấn đơn giản này trả về trường số nguyên không null cho một ID nhất định:

SELECT field1 FROM table WHERE id = 123 LIMIT 1;

Vấn đề là nếu ID không được tìm thấy, kết quả là trống. Tôi cần truy vấn để luôn trả lại một giá trị, ngay cả khi không có kết quả.

Tôi có thứ này hoạt động nhưng tôi không thích nó vì nó chạy gấp 2 lần cùng một truy vấn con:

SELECT IF(EXISTS(SELECT 1 FROM table WHERE id = 123) = 1, (SELECT field1 FROM table WHERE id = 123 LIMIT 1), 0);

Nó trả về một trong hai trường1 nếu hàng tồn tại, nếu không 0. Bất kỳ cách nào để cải thiện điều đó?

Thanks!

Chỉnh sửa theo một số bình luận và câu trả lời: Có, nó phải nằm trong một câu lệnh truy vấn duy nhất và tôi không thể sử dụng thủ thuật đếm vì tôi chỉ cần trả về 1 giá trị (fyi tôi chạy truy vấn với phương thức Java/Spring SimpleJDBCTemplate.QueryForLong () ).: yes it has to be in a single query statement and I can not use the count trick because I need to return only 1 value (FYI I run the query with the Java/Spring method SimpleJdbcTemplate.queryForLong()).

hỏi ngày 16 tháng 9 năm 2012 lúc 19:15Sep 16, 2012 at 19:15

Hướng dẫn mysql return value if no result - mysql trả về giá trị nếu không có kết quả

Lavalmaxime maxime LavalMaxime Laval

3,8088 Huy hiệu vàng37 Huy hiệu bạc60 Huy hiệu Đồng8 gold badges37 silver badges60 bronze badges

1

MySQL có chức năng trả về giá trị nếu kết quả là null. Bạn có thể sử dụng nó trên toàn bộ truy vấn:

SELECT IFNULL( (SELECT field1 FROM table WHERE id = 123 LIMIT 1) ,'not found');

Đã trả lời ngày 16 tháng 9 năm 2012 lúc 20:12Sep 16, 2012 at 20:12

K.A.F.K.A.F.K.A.F.

2.1871 Huy hiệu vàng15 Huy hiệu bạc17 Huy hiệu đồng1 gold badge15 silver badges17 bronze badges

5

Bạn có thể bao gồm đếm (id). Điều đó sẽ luôn quay trở lại.

select count(field1), field1 from table where id = 123 limit 1;

http://sqlfiddle.com/#!2/64c76/4

Đã trả lời ngày 16 tháng 9 năm 2012 lúc 19:24Sep 16, 2012 at 19:24

7

Bạn có thể sử dụng hợp tác

SELECT COALESCE(SUM(column),0)
FROM   table

Đã trả lời ngày 8 tháng 2 năm 2016 lúc 10:54Feb 8, 2016 at 10:54

Hướng dẫn mysql return value if no result - mysql trả về giá trị nếu không có kết quả

Nikunj K.Nikunj K.Nikunj K.

8.2994 Huy hiệu vàng41 Huy hiệu bạc52 Huy hiệu đồng4 gold badges41 silver badges52 bronze badges

0

Nếu ai đó đang tìm cách sử dụng điều này để chèn kết quả vào một biến và sau đó sử dụng nó trong một quy trình được lưu trữ; Bạn có thể làm điều đó như thế này:

DECLARE date_created INT DEFAULT 1;
SELECT IFNULL((SELECT date FROM monthly_comission WHERE date = date_new_month LIMIT 1), 0) 
INTO date_created 
WHERE IFNULL((SELECT date FROM monthly_comission WHERE date = date_new_month LIMIT 1), 0) = 0;

Với điều này, bạn đang lưu trữ trong biến 'Date_created' 1 hoặc 0 (nếu không được trả về).

Đã trả lời ngày 22 tháng 5 năm 2021 lúc 6:11May 22, 2021 at 6:11

Dazdazdaz

111 huy hiệu bạc2 huy hiệu đồng1 silver badge2 bronze badges

Thực hiện tìm kiếm với LEFT OUTER JOIN. Tôi không biết liệu MySQL cho phép nội tuyến VALUES trong các mệnh đề tham gia nhưng bạn có thể có bảng được xác định trước cho mục đích này.

Đã trả lời ngày 16 tháng 9 năm 2012 lúc 19:26Sep 16, 2012 at 19:26

Suzan Ciocsuzan CIOCSuzan Cioc

28.4K56 Huy hiệu vàng207 Huy hiệu bạc377 Huy hiệu đồng56 gold badges207 silver badges377 bronze badges

Câu trả lời của K-A-F hoạt động để chọn một cột, nếu chọn nhiều cột, chúng ta có thể.

DECLARE a BIGINT DEFAULT 1;
DECLARE b BIGINT DEFAULT "name";

SELECT id, name from table into a,b;

Sau đó, chúng ta chỉ cần kiểm tra A, B cho các giá trị.

Đã trả lời ngày 21 tháng 5 năm 2019 lúc 1:48May 21, 2019 at 1:48

Kai Liukai LiuKai Liu

Huy hiệu Silver 1111 Huy hiệu Đồng1 silver badge6 bronze badges

Nếu bạn muốn cả hai luôn luôn là một giá trị trả lại nhưng không bao giờ là giá trị null, bạn có thể kết hợp đếm với Coalesce:

select count(field1), coalesce(field1,'any_other_default_value') from table;

điều đó bởi vì đếm, sẽ buộc MySQL luôn trả về một giá trị (0 nếu không có giá trị nào để đếm) và hợp tác sẽ buộc MySQL phải luôn đặt một giá trị không phải là NULL

Đã trả lời ngày 23 tháng 7 năm 2020 lúc 13:42Jul 23, 2020 at 13:42

Hướng dẫn mysql return value if no result - mysql trả về giá trị nếu không có kết quả

MySQL trở lại điều gì nếu không tồn tại?

Trong MySQL, nhà điều hành không tồn tại cho phép bạn kiểm tra sự không tồn tại của bất kỳ bản ghi nào trong một truy vấn con.Toán tử không tồn tại trả về true nếu SBURERY trả về không có hàng.zero row.

Tôi có thể sử dụng! = Trong mysql?

Trong MySQL, bạn có thể sử dụng các toán tử OR! = Để kiểm tra bất bình đẳng trong một truy vấn.Ví dụ: chúng ta có thể kiểm tra bất bình đẳng bằng cách sử dụng toán tử, như sau: Chọn * từ các liên hệ trong đó Last_Name 'Johnson';you can use the <> or != operators to test for inequality in a query. For example, we could test for inequality using the <> operator, as follows: SELECT * FROM contacts WHERE last_name <> 'Johnson';

SQL chọn trả lại gì nếu không tìm thấy gì?

Sự mô tả.Điều kiện null được sử dụng trong SQL để kiểm tra giá trị null.Nó trả về đúng nếu tìm thấy giá trị null, nếu không nó sẽ trả về sai.Nó có thể được sử dụng trong một câu lệnh CHỌN, CHỌN, CẬP NHẬT hoặc XÓA.It returns TRUE if a NULL value is found, otherwise it returns FALSE. It can be used in a SELECT, INSERT, UPDATE, or DELETE statement.

Làm gì! = Có nghĩa là trong mysql?

không bằng (,! =) toán tử.MySQL không bằng được sử dụng để trả về một tập hợp các hàng (từ bảng) sau khi đảm bảo rằng hai biểu thức được đặt ở hai bên của toán tử không bằng () không bằng nhau.Cú pháp:,! = Phiên bản MySQL: 5.6. (<>, !=) operator. MySQL Not equal is used to return a set of rows (from a table) after making sure that two expressions placed on either side of the NOT EQUAL TO (<>) operator are not equal. Syntax: <>, != MySQL Version: 5.6.