MySql-Как установить два псевдонима в один столбец - PullRequest
0 голосов
/ 03 декабря 2018
select event_id,
       IF(event_type!='C',e.event_title ,'') event_title,
       IF(event_type='C', e.event_title ,'') event_subtitle
from event e where log_id='%s'

этот запрос приводит только для "event_title" и показывает пустой результат для "event_subtitle", хотя у меня есть данные для результата "event_subtitle"

Ответы [ 4 ]

0 голосов
/ 03 декабря 2018

Интересно, нужна ли вам агрегация:

select event_id,
       max(case when event_type <> 'C' then e.event_title end) as event_title,
       max(case when event_type = 'C' then e.event_title end) as event_subtitle
from event e
where log_id = '%s'
group by event_id;
0 голосов
/ 03 декабря 2018

Вы пишете event_title в обоих условиях, но согласно вашему требованию я знаю, что вы хотите IF(event_type='C', e.event_subtitle ,'') event_subtitle

Изменить с

IF(event_type!='C',e.event_title ,'') event_title,
IF(event_type='C', e.event_title ,'') event_subtitle

на

IF(event_type!='C',e.event_title ,'') event_title,
IF(event_type='C', e.event_subtitle ,'') event_subtitle
                      ^^^^^^^^^^^
0 голосов
/ 03 декабря 2018

Код «работает», например:

drop table if exists event;
create table event(event_id int, event_type varchar(1), event_title varchar(10));

insert into event values
(1,'c','aaa'),(2,'x','xxx');

select event_id,
       IF(event_type!='C',e.event_title ,'') event_title,
       IF(event_type='C', e.event_title ,'') event_subtitle
from event e;

+----------+-------------+----------------+
| event_id | event_title | event_subtitle |
+----------+-------------+----------------+
|        1 |             | aaa            |
|        2 | xxx         |                |
+----------+-------------+----------------+
2 rows in set (0.00 sec)

Если ваша модель данных выглядит не так или вывод, основанный на моих данных выборки, не соответствует вашим ожиданиям, пожалуйста, добавьте данные выборки и требуемый вывод ввопрос как текст.

0 голосов
/ 03 декабря 2018

отметьте это:

select event_id,
       case when event_type<>'C' then e.event_title  end  as  event_title,
       case when event_type='C'then e.event_title end as  event_subtitle
from event where log_id='%s';

для примера:

SELECT ename ,
case when job='SALESMAN' then  ename end as  salesman_ename,
case when job<>'SALESMAN' then  ename end as not_salesman_ename
FROM scott.emp;

SMITH       SMITH
ALLEN   ALLEN   
WARD    WARD    
JONES       JONES
MARTIN  MARTIN  
BLAKE       BLAKE
CLARK       CLARK
SCOTT       SCOTT
KING        KING
TURNER  TURNER  
ADAMS       ADAMS
JAMES       JAMES
FORD        FORD
MILLER      MILLER
H       H
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...