java - Im looking to filter my query to get all names with the relation of ID
问题描述
I want to have this output from my query:
CODE NAME MANAGER
1 John Ely
Paul
Elsa Anahid
2 Raul Ely
Rosa Paul
Ahmad
How can I order in this way?
John,Paul and Elsa belogns to CODE 1
Raul,Rosa Ahmad belong to CODE 2
I tried but i obtain this:
CODE NAME MANAGER
1 John Ely
1 Paul
1 Elsa Anahid
2 Raul Ely
2 Rosa Paul
2 Ahmad
OR this:
CODE NAME MANAGER
1 John Ely
2 Rosa Paul
The query:
SELECT ad.CODE,em.NAME,em.MANAGER
FROM employess em INNER JOIN
address ad
ON ad.CODE = em.CODE
GROUP BY ad.CODE;
解决方案
正如 Gordon Linoff 建议的那样,在表示层进行修改确实更好。
但是,也可以使用 SQL 来实现。
SELECT
IF(
em.NAME = (select ems.NAME from employees ems where ems.CODE = em.CODE order by em.NAME LIMIT 1),
em.CODE,
''
) as CODE,
em.NAME,
em.MANAGER
FROM employess em
INNER JOIN address ad ON ad.CODE = em.CODE
ORDER BY em.CODE, em.NAME;
这仅在名称在表employess 中是唯一的情况下才有效,否则最好在子查询中比较uniq ID。是的,这个子查询给数据库增加了不必要的负载。因此,如果性能很重要 - 保持查询简单,并在 java 中处理 CODE 字段。
推荐阅读
- c++ - 为什么 decltype(param) 说 param 是右值引用,但我不能调用接受右值引用的函数?
- javascript - 为什么ParentNode在动态创建添加到DOM的元素时为空
- kotlin - 为什么我的数据无法成功转换为我定义的 json 属性
- python - 熊猫试图通过获取某些字符串之间的行来转换数据框
- single-sign-on - 身份提供者绑定的含义
- python - 查找列表中第一次出现的字符
- sql - 'YYYYQ' 是 SQL 的有效 DATETIME 格式吗?如果是这样,我该如何使用我的数据呢?
- scala - 在元组中拆分字符串
- arduino - 如何解决 Arduino 代码 ESP32 Board + PS4 控制器中的此错误
- installation - GNURadio w/MacOs - 安装和配置问题