我有两个表,其中一个表中有一列保存另一个表的ID。此列可以包含多个ID,因此我将其存储为列表,例如“1,2,3,4”可以是值。所以我尝试使用以下内容:
SELECT TableAValue
FROM TableA
WHERE TableAID IN
(SELECT TableAID FROM TableB WHERE TableBID = 1)
这只会带回一个值。
现在如果我使用:
SELECT TableAID FROM TableB WHERE TableBID = 1
这带来了四个值。如果我复制这四个值并使用:
SELECT TableAValue
FROM TableA
WHERE TableAID IN
(1,2,3,4)
这将带回我追求的四个价值观。这看起来很简单,所以我想我要么完全错了,要么我错过了一些小细节。有什么想法吗?
答案 0 :(得分:3)
正如评论讨论中所提到的,你的错误是在一个字段中保存四个值。这样做意味着您持有字符串,单个值,而不是整数列表。如果您想要保留多个值,则需要多个位置来单独保存它们。
因此,如果您有四条记录,每条记录在TableAID中具有不同的值,它将完全按预期工作。
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