programing

결과가없는 경우에도 값 반환

copysource 2021. 1. 17. 11:50
반응형

결과가없는 경우에도 값 반환


주어진 ID에 대해 null이 아닌 정수 필드를 반환하는 이러한 종류의 간단한 쿼리가 있습니다.

SELECT field1 FROM table WHERE id = 123 LIMIT 1;

문제는 ID가 없으면 결과 집합이 비어 있다는 것입니다. 결과가 없더라도 항상 값을 반환하는 쿼리가 필요합니다.

이 일이 작동하지만 동일한 하위 쿼리를 2 번 실행하기 때문에 마음에 들지 않습니다.

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

행이 있으면 field1을 반환하고 그렇지 않으면 0을 반환합니다. 개선 할 방법이 있습니까?

감사!

몇 가지 의견과 답변을 다음 편집하십시오 : 예, 단일 쿼리 문에 있어야하며 1 값 만 반환해야하기 때문에 카운트 트릭을 사용할 수 없습니다 (참고로 Java / Spring 메서드 SimpleJdbcTemplate.queryForLong ()으로 쿼리를 실행합니다.) ).


MySQL에는 결과가 null 인 경우 값을 반환하는 함수가 있습니다. 전체 쿼리에 사용할 수 있습니다.

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

1 개의 레코드 (LIMIT 1)를 찾고 있으므로 이것이 작동합니다.

(SELECT field1 FROM table WHERE id = 123) 
UNION 
(SELECT 'default_value_if_no_record')
LIMIT 1;

기본값을 표시하거나 결과가 없음을 나타내는 편리한 방법이 될 수 있습니다. 보고서에 사용합니다.

이것을 사용하여 보고서에서 헤더를 만드는 방법 http://blogs.uoregon.edu/developments/2011/03/31/add-a-header-row-to-mysql-query-results/참조하십시오 .


count (id)를 포함 할 수 있습니다. 그것은 항상 돌아올 것입니다.

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

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


COALESCE 를 사용할 수 있습니다.

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

로 검색하십시오 LEFT OUTER JOIN. MySQL VALUES이 조인 절에서 인라인 허용하는지 여부는 모르지만이 목적을 위해 미리 정의 된 테이블을 가질 수 있습니다.


kaf의 대답은 하나의 열을 선택하는 데 작동하며 여러 열을 선택하면 할 수 있습니다.

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

SELECT id, name from table into a,b;

그런 다음 a, b 값을 확인하면됩니다.

참조 URL : https://stackoverflow.com/questions/12449899/returning-a-value-even-if-no-result

반응형