결과가없는 경우에도 값 반환
주어진 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
'programing' 카테고리의 다른 글
기본 마커를 제거하려면 어떻게합니까? (0) | 2021.01.17 |
---|---|
패스는 jquery ajax에 헤더 매개 변수를 허용합니다. (0) | 2021.01.17 |
프로그래밍 방식으로 UIView의 자동 크기 조정 마스크를 설정 하시겠습니까? (0) | 2021.01.17 |
RegEx를 사용하여 두 XML 태그 사이의 모든 항목 찾기 (0) | 2021.01.17 |
데이터 유효성을 확인하는 것은 누구의 책임입니까? (0) | 2021.01.17 |