Возможно скрыть данные для запроса sql - PullRequest
0 голосов
/ 16 марта 2020

У меня был запрос и таблица, подобная этой;

select A.id, A.name, B.value
from tblA A
left outer join tblB B 
on A.id = B.id

--------------------
id | Name   | value
--------------------
1  | Room A | Data 1
2  | Room A | Data 2
3  | Room A | Data 3
4  | Room B | Data 1
5  | Room C | Data 1

, и я хочу, чтобы вывод был таким:

--------------------
id | Name   | value
--------------------
1  | Room A | Data 1
2  |        | Data 2
3  |        | Data 3
4  | Room B | Data 1
5  | Room C | Data 1

Я пытаюсь использовать DISTINCT, чтобы сделать его скрытым , но, похоже, ничего не случилось. Есть идеи, что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 16 марта 2020

Если вы используете MySQL 8.0 или выше, использование оконной функции LAG - один из способов ее достижения -

select A.id, CASE WHEN A.name = LAG(A.name) OVER(ORDER BY A.id)
                       THEN NULL
                  ELSE A.id
             END, B.value
from tblA A
left outer join tblB B 
on A.id = B.id
1 голос
/ 16 марта 2020

DISTINCT не скрывает значение столбца. В MySQL вы можете использовать комбинацию функций IF и LAG, а не отображать имя при повторении

SELECT A.id,
       IF (A.name = LAG (A.name, 1) OVER (ORDER BY A.name), '', A.name) name,
       B.VALUE
  FROM tblA A LEFT OUTER JOIN tblB B ON A.id = B.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...