我的查询如下
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个单独的查询中执行此操作,但如果在单个查询中有任何方法可以做,请告诉我。 非常感谢提前
答案 0 :(得分:1)
我不知道sql server和关于这种结构的评论是不可取的,你可以在mysql中使用以下this fiddle进行以下操作。
select distinct id from table1 join table2 on find_in_set(id,ids)
更新:我刚刚意识到这并不反映table2
拥有自己的id
字段并基于此限制搜索。如果你需要帮助修改查询以容纳我,我会更新它和小提琴。
更新2:根据fiddle,这是一个蹩脚但可能有效的尝试在SQL Server中使用其更有限的字符串工具。如果有人知道SQL Server的更简单的find_in_set
等价物,我很想知道它是什么。
select distinct id from table1 join table2
on patindex('%,'+cast(id as varchar)+',%',ids)>0 or
patindex(cast(id as varchar)+',%',ids)>0 or
patindex('%,'+cast(id as varchar),ids)>0 or
patindex(cast(id as varchar),ids)>0