gpt4 book ai didi

java - SQL 查询内连接返回多行

转载 作者:行者123 更新时间:2023-11-30 11:09:09 34 4
gpt4 key购买 nike

我们有 2 个表;表 1、表 2。

table1:

CNTY | ZIP  | SERVICE
111 | 1234 | N
111 | | Y
112 | | Y

table2:

CNTY | ZIP  |
111 | 1234 |
111 | 4321 |
112 | 4433 |

我们正在使用 oracle 并尝试以下查询 -

SELECT t1.SERVICE
FROM table1 t1
WHERE t1.CNTY IN (SELECT t2.CNTY
FROM table2 t2
WHERE t2.ZIP = '4433')

返回 Y,这是预期的行为。但如果我们发送 t2.zip='4321'它返回 2 行,但我们期待一行 (Y)。另外,如果我们发送 t2.zip='1234'应该返回'N'。但是,上面的查询返回 2 行。

我是数据库方面的新手。我们尝试过,但无法在一个语句中得到它。有什么方法可以获得预期的行为吗?

基本上我对查询的期望是 -

  1. 它应该总是返回 SERVICE来自 table1 的值.如果它找到 ZIPtable1它应该返回 SERVICE匹配 zip 的值。
  2. 如果没有匹配ZIPtable1 , 然后它应该找到 CNTYtable2 中给定的 zip 关联然后拿那个 CNTY来自 table2 的值, 它应该找到 SERVICE table1 中的值用于匹配CNTY并返回值。

例如:对于ZIP 4321在table1中没有匹配的条目,但是在table2中4321与111相关联,所以对于111在table1中的SERVICE值是Y。所以,查询应该返回Y。

最佳答案

我不确定您为什么只期望一行。让我们检查查询的作用:

SELECT t2.CNTY FROM table2 t2 WHERE t2.ZIP = '4321'

这将返回一个值:111,对应于以下行:

     111  | 4321 |

所以完整的查询等同于

SELECT t1.SERVICE FROM table1 t1 WHERE t1.CNTY IN (111)

这将返回这两行的服务,因为它们的 CNTY 都等于 111:

     111  | 1234 |  N
111 | | Y

关于java - SQL 查询内连接返回多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28243709/

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