cwui 2024-01-10 10:06 采纳率: 27.8%
浏览 19
已结题

SQL取数问题 ( SQL或SQLScript都可以 )

img

当NODE值N02的NAME不为空(Cherry),取N02的NAME即可,不再考虑其他值
结果只有一行
Cherry

当NODE值N02的NAME值为空时(#),才考虑取N23和N24的NAME
即两行
Alpha
Tom

也就是说,结果只有两种
Cherry
或
Alpha 
Tom

结果不会出现下面这种:
Cherry
Alpha
Tom

~~~~~~~~~~~~~~~~~~~~~~~~
问题:使用SQL 或 SQLScript都可以,如何实现 ?

  • 写回答

7条回答 默认 最新

  • 专家-郭老师 Java领域新星创作者 2024-01-10 10:10
    关注

    引用GPT4和答主提供,参考如下:

    你所描述的问题看起来适合使用SQL的CASE WHEN语句和UNION ALL语句来解决。我们先创建一张临时表用于存储你所提到的数据,然后写一个SQL查询来实现你的需求。以下是我为你编写的SQL代码:

    CREATE TEMPORARY TABLE temp_table (NODE varchar(255), NAME varchar(255));
    INSERT INTO temp_table VALUES ('N01', 'Alpha'), ('N02', 'Cherry'), ('N23', 'Alpha'), ('N24', 'Tom');
    
    SELECT 
        CASE 
            WHEN (SELECT NAME FROM temp_table WHERE NODE = 'N02') <> '#' THEN (SELECT NAME FROM temp_table WHERE NODE = 'N02')
        END AS 'NAME'
    UNION ALL
    SELECT 
        CASE 
            WHEN (SELECT NAME FROM temp_table WHERE NODE = 'N02') = '#' THEN (SELECT NAME FROM temp_table WHERE NODE IN ('N23', 'N24'))
        END AS 'NAME';
    
    

    这个语句因为使用了UNION ALL,所以在'N02'节点的NAME不为空时,它将返回'N02'节点的NAME值,而在'N02'节点的NAME值为空(或者赋值为'#')时,它将返回'N23'和'N24'节点的NAME值。请注意,根据你的数据库系统,语法可能略有不同。
    但是,请注意,如果对应'N02'的NAME值为空时,上述SQL语句时会返回多行记录,你需要在你的程序中进行适当的处理。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 1月18日
  • 已采纳回答 1月10日
  • 修改了问题 1月10日
  • 修改了问题 1月10日
  • 展开全部

悬赏问题

  • ¥15 问题重发,R语言:代码运行过程中出现如下警告,请求如何解决!
  • ¥15 苍穹外卖拦截器token为null
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵
  • ¥15 券商软件上市公司信息获取问题
  • ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout
  • ¥15 Android studio AVD启动不了
  • ¥15 陆空双模式无人机怎么做
  • ¥15 想咨询点问题,与算法转换,负荷预测,数字孪生有关
  • ¥15 C#中的编译平台的区别影响