如果在db2 sql查询的上一个表中找不到记录,则对下一个表执行列搜索

分享乐趣

我有三个表具有相同的列

table 1
    col1 col2 col3 col4

table 2
    col1 col2 col3 col4

table 3
    col1 col2 col3 col4

如果在table1上找不到记录,则必须执行搜索,然后仅在table2中进行搜索,如果在table2中找不到,则转到table3但是,如果在这些表中的任何一个表中找到记录,则对col4进行一些计算并返回col4而无需进一步执行。我正在使用DB2,但找不到确切的解决方案。我怎样才能做到这一点?

查理菲斯

如果要将其保留为一个查询,则可以使用UNION ALL来获取正确的表:

SELECT col4, 1 as SortCol
    FROM Table1
    WHERE col1 = 'whatever'
UNION ALL
SELECT col4, 2 as SortCol
    FROM Table2
    WHERE col1 = 'whatever'
UNION ALL
SELECT col4, 3 as SortCol
    FROM Table3
    WHERE col1 = 'whatever'

ORDER BY SortCol
FETCH 1 ROW ONLY;

编辑另一种方法是可能的。我必须说,我不确定来自SQL Server的确切语法,但这将是这样的:

SELECT COALESCE(t1.col4, t2.col4, t3.col4)

FROM (VALUES (@col1, @col2) ) v(col1, col2)
LEFT JOIN Table1 t1 ON t1.col1 = v.col1 AND t1.col2 = v.col2
LEFT JOIN Table2 t2 ON t2.col1 = v.col1 AND t2.col2 = v.col2
    AND t1.col4 IS NULL
LEFT JOIN Table3 t3 ON t3.col1 = v.col1 AND t3.col2 = v.col2
    AND t1.col4 IS NULL AND t2.col4 IS NULL;

想法是使用VALUES子句(或SELECT带有no的a FROM)作为驱动行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果在另一个表中找不到记录,则从一个表中选择

来自分类Dev

在java / jdbc中,如果在db2中包含“仅用于ur提取”,是否必须在执行选择操作后调用commit?

来自分类Dev

如果下一个表事务失败,如何删除上一个表事务

来自分类Dev

如果下一个表事务失败,如何删除上一个表事务

来自分类Dev

如果在R中失败,则移至下一个代码行

来自分类Dev

如果在第一个表中找不到值,则在第二个表上联接

来自分类Dev

如果在第一个表中找不到值,则在第二个表上联接

来自分类Dev

如果在所需的星期中找不到工作日,则获取下一个工作日的出现

来自分类Dev

如果在另一个内存表中,则从内存表中删除

来自分类Dev

如果在下一个div中超出内容,如何将内容添加到下一个div

来自分类Dev

如果在上一个查询中找到Laravel,则跳过结果

来自分类Dev

JQuery 数据表分页:显示当前页面的 2 个上一个和下一个数字

来自分类Dev

db2查询,该查询显示针对另一个表中的每个值重复的记录

来自分类Dev

如果在编辑文本中是任何文本,则自动进行下一个活动

来自分类Dev

如果在 react slick 中当前幻灯片之前或之后没有可用的幻灯片,请禁用上一个或下一个按钮。(上一个下一个方法)

来自分类Dev

如果在另一个表中引用了行,则防止软删除

来自分类Dev

如果在另一个表mysql中存在ID,如何返回标志

来自分类Dev

Laravel:执行一个查询更新,然后,如果成功,则执行下一个,否则,都不执行

来自分类Dev

如果在HTML上找不到第一个,则备份img

来自分类Dev

如果在一个主机中找不到文件,则从另一台主机复制SCP

来自分类Dev

下一个上一个图标在猫头鹰轮播2中不起作用

来自分类Dev

单击角度 2 中的上一个和下一个按钮时的下拉值更改

来自分类Dev

获取下一个和上一个CakePHP 2的Paginator的URL

来自分类Dev

获取下一个和上一个CakePHP 2的Paginator的URL

来自分类Dev

VBA,对于每个下一个-如果此工作簿中的工作表名称等于另一个工作簿中的工作表名称

来自分类Dev

SQL根据另一个表中的搜索结果在表中查找行

来自分类Dev

如果加载下一个视图,则执行函数

来自分类Dev

如果所有记录都存在于SQL Server的另一个表中,则返回行列表

来自分类Dev

如何合并表并从上一个表创建新记录(如果缺少)?

Related 相关文章

  1. 1

    如果在另一个表中找不到记录,则从一个表中选择

  2. 2

    在java / jdbc中,如果在db2中包含“仅用于ur提取”,是否必须在执行选择操作后调用commit?

  3. 3

    如果下一个表事务失败,如何删除上一个表事务

  4. 4

    如果下一个表事务失败,如何删除上一个表事务

  5. 5

    如果在R中失败,则移至下一个代码行

  6. 6

    如果在第一个表中找不到值,则在第二个表上联接

  7. 7

    如果在第一个表中找不到值,则在第二个表上联接

  8. 8

    如果在所需的星期中找不到工作日,则获取下一个工作日的出现

  9. 9

    如果在另一个内存表中,则从内存表中删除

  10. 10

    如果在下一个div中超出内容,如何将内容添加到下一个div

  11. 11

    如果在上一个查询中找到Laravel,则跳过结果

  12. 12

    JQuery 数据表分页:显示当前页面的 2 个上一个和下一个数字

  13. 13

    db2查询,该查询显示针对另一个表中的每个值重复的记录

  14. 14

    如果在编辑文本中是任何文本,则自动进行下一个活动

  15. 15

    如果在 react slick 中当前幻灯片之前或之后没有可用的幻灯片,请禁用上一个或下一个按钮。(上一个下一个方法)

  16. 16

    如果在另一个表中引用了行,则防止软删除

  17. 17

    如果在另一个表mysql中存在ID,如何返回标志

  18. 18

    Laravel:执行一个查询更新,然后,如果成功,则执行下一个,否则,都不执行

  19. 19

    如果在HTML上找不到第一个,则备份img

  20. 20

    如果在一个主机中找不到文件,则从另一台主机复制SCP

  21. 21

    下一个上一个图标在猫头鹰轮播2中不起作用

  22. 22

    单击角度 2 中的上一个和下一个按钮时的下拉值更改

  23. 23

    获取下一个和上一个CakePHP 2的Paginator的URL

  24. 24

    获取下一个和上一个CakePHP 2的Paginator的URL

  25. 25

    VBA,对于每个下一个-如果此工作簿中的工作表名称等于另一个工作簿中的工作表名称

  26. 26

    SQL根据另一个表中的搜索结果在表中查找行

  27. 27

    如果加载下一个视图,则执行函数

  28. 28

    如果所有记录都存在于SQL Server的另一个表中,则返回行列表

  29. 29

    如何合并表并从上一个表创建新记录(如果缺少)?

热门标签

归档