【发布时间】:2013-06-20 23:59:53
【问题描述】:
我有如下查询
select * from table1 where id in (select ids from table2 where id = 100)
如果我单独运行,子查询会返回 34,35,55,66 等输出。
但是我上面的查询给出了错误
Conversion failed when converting the varchar value '34,35,55,56' to data type int.
table1 中的 id 列是 int。我知道我可以在 2 个单独的查询中执行此操作,但如果有任何方法可以在单个查询中执行,请告诉我。 非常感谢提前
【问题讨论】:
-
请不要在一列中存储多个值。就像你的情况一样,这是一个真正的痛苦。你真的应该改变你的数据库结构。
-
@juergend 不,我不能更改为现有数据库。
-
即使是现有的数据库也可以更改...即使您必须更改一些内容,也请考虑这样做。
-
恰好包含一组数字和逗号的单个字符串与多个整数之间存在逻辑差异。这在 SQL 中和在我能想到的几乎任何其他语言中一样正确。更改结构确实会更好,因为您将继续使用当前设计解决痛点。如果您坚持要继续,则需要查找逗号分隔字符串 - 此处已被询问和回答 很多 次。
-
@Damien_The_Unbeliever 你能给我链接,我们可以用逗号分割字符串
标签: sql sql-server-2012