반응형
MySQL View에서 결과가 없을 때 값을 반환하려면 어떻게 해야 합니까?
다음 보기에서 생성된 일부 MySQL 레코드가 있습니다.
+---------+-----------------------------+------------+
| user_id | meta_key | meta_value |
+---------+-----------------------------+------------+
| 2 | admin-first-timer-training | NULL |
| 2 | admin-first-timer-overnight | No |
| 2 | admin-first-timer-outdoor | No |
+---------+-----------------------------+------------+
기록을 갖고 싶습니다.
+---------+-----------------------------+------------+
| user_id | meta_key | meta_value |
+---------+-----------------------------+------------+
| 2 | admin-first-timer-training | Yes |
| 2 | admin-first-timer-overnight | No |
| 2 | admin-first-timer-outdoor | No |
+---------+-----------------------------+------------+
현재 다음 보기를 사용하여 다음 레코드를 생성하고 있습니다.
create VIEW `wp_record_db` AS
select distinct `u`.`ID` AS `id`,
(select distinct (
CASE WHEN `wp_usermeta`.`meta_value`="No" THEN "No"
ELSE "Yes" END)
from `wp_usermeta`
where `wp_usermeta`.`user_id` = `u`.`ID` and `wp_usermeta`.`meta_key` in ('admin-first-timer-outside','admin-first-timer-outdoors','admin-first-timer-outdoor')
limit 1) AS `admin-first-timer-outdoor`,
(select distinct (
CASE WHEN `wp_usermeta`.`meta_value`="No" THEN "No"
WHEN `wp_usermeta`.`meta_value` IS NULL THEN "YES"
ELSE "Yes" END)
from `wp_usermeta` where `wp_usermeta`.`user_id` = `u`.`ID` and `wp_usermeta`.`meta_key` = 'admin-first-timer-training'
limit 1) AS `admin-first-timer-training`,
(select distinct (
CASE WHEN `wp_usermeta`.`meta_value`="No" THEN "No"
ELSE "Yes" END)
from `wp_usermeta`
where `wp_usermeta`.`user_id` = `u`.`ID` and `wp_usermeta`.`meta_key` = 'admin-first-timer-overnight'
limit 1) AS `admin-first-timer-overnight`
from `wp_users` `u`;
에서 보는 바와 같이
(select distinct (CASE WHEN `wp_usermeta`.`meta_value`="No" THEN "No" WHEN `wp_usermeta`.`meta_value` IS NULL THEN "YES" ELSE "Yes" END) from `wp_usermeta` where `wp_usermeta`.`user_id` = `u`.`ID` and `wp_usermeta`.`meta_key` = 'admin-first-timer-training' limit 1) AS `admin-first-timer-training`,
케이스 문을 사용하여 NULL인지 테스트해 보았지만 원하는 결과를 제공하지 못했습니다.
SELECT IFNULL((select `wp_usermeta`.`meta_value` from `wp_usermeta` where `wp_usermeta`.`user_id` = 2 and `wp_usermeta`.`meta_key` = 'admin-first-timer-training'), "Yes");
원하는 리턴 출력을 생성하는 것처럼 보이지만 케이스 문에서 작동할 수는 없습니다. 하지만 삽입하려고 해도 항상 빈 문이 반환됩니다.
무엇을 시도해 볼 수 있습니까?
조건부 집계를 사용하여 쿼리 미터를 보다 쉽게 읽을 수 있도록 할 수 있습니다.
그렇지만NULL
항상 아니요와 다를 것이므로 추가 확인이 필요하지 않습니다.NULL
SELECT `user_id`, MIN(CASE WHEN `meta_key` = 'admin-first-timer-training' AND `meta_value` = 'No' THEn 'No' ELSE 'Yes' END) as 'admin-first-timer-training', MIN(CASE WHEN `meta_key` = 'admin-first-timer-overnight' AND `meta_value` = 'No' THEn 'No' ELSE 'Yes' END) as 'admin-first-timer-overnight', MIN(CASE WHEN `meta_key` = 'admin-first-timer-outdoor' AND `meta_value` = 'No' THEn 'No' ELSE 'Yes' END) as 'admin-first-timer-outdoor' FROM wp_usermeta GROUP BY user_id
user_id | admin-first-timer-training | admin-first-timer-timer | admin-first-timer-timer-tim------: | :------------------------- | :-------------------------- | :------------------------2 | 예 | 아니요 | 아니요
db<>여기로 이동
언급URL : https://stackoverflow.com/questions/73255939/how-can-i-return-a-a-value-on-no-result-in-a-mysql-view
반응형
'code' 카테고리의 다른 글
ngrx/store의 모든 상태를 재설정하는 방법은 무엇입니까? (0) | 2023.06.07 |
---|---|
GitHub의 프로젝트 대 저장소 (0) | 2023.06.07 |
쿼리 크기 찾기 (0) | 2023.06.07 |
Objective-C 네임스페이스 충돌을 해결하는 가장 좋은 방법은 무엇입니까? (0) | 2023.06.02 |
MVC4 번들의 {version} 와일드카드 (0) | 2023.06.02 |