首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用子查询使用IN

使用子查询使用IN
EN

Stack Overflow用户
提问于 2011-10-04 18:53:51
回答 1查看 68关注 0票数 1

我有两个表,其中一个表中有一列保存另一个表的ID。此列可以包含多个ID,因此我将其存储为列表,例如"1,2,3,4“可以是值。因此,我尝试使用以下代码:

代码语言:javascript
运行
复制
SELECT TableAValue
FROM TableA
WHERE TableAID IN 
(SELECT TableAID FROM TableB WHERE TableBID  = 1) 

这只带回一个值。

现在如果我使用:

代码语言:javascript
运行
复制
SELECT TableAID FROM TableB WHERE TableBID  = 1

这将返回四个值。另外,如果我复制这四个值并使用:

代码语言:javascript
运行
复制
SELECT TableAValue
FROM TableA
WHERE TableAID IN 
(1,2,3,4) 

这将带回我追求的四个价值观。这看起来是很简单的事情,所以我想我要么做错了,要么遗漏了一些小细节。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-04 19:14:03

正如在注释讨论中提到的,您的错误是在一个字段中包含四个值。这样做意味着您持有的是一个字符串,一个单值,而不是一个整数列表。如果你想保存多个值,你需要几个地方来分别保存它们。

因此,如果您有四条记录,每条记录在TableAID中都有不同的值,那么它将完全按照您的预期工作。

代码语言:javascript
运行
复制
CREATE TABLE TableB (
  TableBID INT,
  TableAID INT
)

INSERT INTO TableB
      SELECT 1, 1
UNION SELECT 1, 2
UNION SELECT 1, 3
UNION SELECT 1, 4
UNION SELECT 2, 3
UNION SELECT 2, 4
UNION SELECT 2, 5
UNION SELECT 2, 6
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7646768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档