我有两个表,其中一个表中有一列保存另一个表的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) 这将带回我追求的四个价值观。这看起来是很简单的事情,所以我想我要么做错了,要么遗漏了一些小细节。有什么想法吗?
发布于 2011-10-04 19:14:03
正如在注释讨论中提到的,您的错误是在一个字段中包含四个值。这样做意味着您持有的是一个字符串,一个单值,而不是一个整数列表。如果你想保存多个值,你需要几个地方来分别保存它们。
因此,如果您有四条记录,每条记录在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, 6https://stackoverflow.com/questions/7646768
复制相似问题