如何在数据库中,通过两表连接多条数据?
该方法适用于WPF项目的数据库存储过程编写,而且是作用于查询方法。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiIXZ05WZj91YpB3IwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxSP9EUTzMGRPBTVE5EM4wmYwhGWhxGZzwEMW1mY1RzRapnTtxkb5ckYplTeMZTTINGMShUYfRHelRHLwEzX39GZhh2css2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3Pn5GcuEDO1QTOwATM5ITOwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
SELECT ROW_NUMBER () over(order by B_ModuleFunction.ModuleFunctionID) as number,
B_ModuleFunction.ModuleFunctionID,
RTRIM(B_Module.ModuleName) AS ModuleName,
RTRIM(B_Module.ModuleCode) AS ModuleCode,
B_Module.f_id,
RTRIM(B_ModuleFunction.Detailed_attribute_gatherID) AS Detailed_attribute_gatherID,
'False' AS SelectID,
'False' AS InsertID,
'False' AS UpdateID,
'False' AS DeleteID
FROM B_Module INNER JOIN
B_ModuleFunction ON B_Module.ModuleID = B_ModuleFunction.ModuleID
--在Sql中将 varchar 值 '1,2,3,4,5,6' 转换成数据类型 int
--charindex(匹配内容,检测字符串),匹配不到数据返回0
WHERE charindex(','+rtrim(B_ModuleFunction.ModuleFunctionID)+',',','[email protected]+',')>0
这里用到的两张数据表分别是B_Powers和B_ModuleFunction,这里的B_Power.ModuleFunctionID连接了B_Powers表中的多条id,如果是普通的连表,是通过id连接且只能连接一条id,而这里连接了多条,B_Powers表中的ModuleFunctionID其实在char类型,但通过charindex方法可以实现不同类型的数据查找。
总结:首先是使用这种查询方法需要注意的地方,存放多条id的ModuleFunctionID中结尾要用“,”隔开,不然执行操作的时候会出错。最后要注意int类型的数据不能和char类型数据连接,以上条件满足后就可通过charindex方法查询数据。
PS:以上均为个人理解,可能存在错误或遗漏,欢迎各位指正。