gpt4 book ai didi

java - 从具有复杂结构的表中选择数据的sql查询

转载 作者:搜寻专家 更新时间:2023-11-01 02:51:49 25 4
gpt4 key购买 nike

我有一个结构如下的表。

我无法控制更改表格。

它有三列:student_name, student_id, name_id

现在学生姓名可以是任意数量的单词。一行中只有一个词。根据字数,输入name_id,重复student_id。

结构应该是这样的:

假设 name1 是:Ram Laxman Prasad Sharma

姓名 2 是:Pandit Gangadhar Vidyadhar Mayadhar Omkarnath Shastri

所以表格看起来像:

student_name  |   student_id    |   name_id
-------------------------------------------------
Ram 1 1
Laxman 1 2
Prasad 1 3
Sharma 1 4
Pandit 2 1
Gangadhar 2 2
Vidyadhar 2 3
Mayadhar 2 4
Omkarnath 2 5
Shastri 2 6

我希望我把结构解释清楚了。

现在,我想编写一个查询来只读取每个学生的前四个名字。然而,如果名字的数量少于四个,空字符串应该被删除,如果它大于四个,前四个应该被删除,其余的被忽略。

我只需要将它放在单个选择查询中,因为该查询将在 spring 批处理程序中传递。但我不知道如何循环遍历 nameid 列以获取每个学生的前四个姓名 ID。

如何为 DB2 数据库 v8 设计此 sql??

感谢阅读。

最佳答案

受 Amit 启发的改进版本 - 如果您需要 1 列中的所有 4 个名称:)

  select
t1.student_name ||
coalesce(' ' || t2.student_name, '') ||
coalesce(' ' || t3.student_name, '') ||
coalesce(' ' || t4.student_name, '') as "first 4 names"
from mytable t1
left join mytable t2 on t1.student_id = t2.student_id and t2.name_id = 2
left join mytable t3 on t1.student_id = t3.student_id and t3.name_id = 3
left join mytable t4 on t1.student_id = t4.student_id and t4.name_id = 4
where t1.name_id = 1

关于java - 从具有复杂结构的表中选择数据的sql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9749675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com