我的场景如下(在MySQL中) 我有一个表说表1,它有2列:
userID,column_acess
表2列出了列表col1,col2,col3等
现在我想要做的是使用pymySQL通过检查列,acess字段(将包含tabl2中列的逗号分隔列表)查询表1以获取允许特定用户ID的列,以及将该结果用于另一个sql查询(适用于table2),以实际从允许用户访问的相应列中获取数据。
基本上我想要像:
从table2中选择(从tabl1中选择column_acess,其中user_ID ='123')
所以内部查询应该返回列的列表,例如col1,col2,它将用于选择table2中外部查询中的列
我如何在mySQL中执行此操作?
答案 0 :(得分:0)
我强烈建议你也阅读这篇文章。您应该首先在变量中存储列或使用动态SQL查询。 Use SELECT result as COLUMN name in other SELECT
BTW你的架构甚至不在1 NF中,因为你在表1中没有原子值。你应该避免这种情况。
答案 1 :(得分:0)
MySQL支持使用标准grant
语句向用户授予列级权限。
我建议您从这个主题的documentation开始。
对列使用grant
的替代方法是为不同的用户类型创建视图。事实上,这是更通用的解决方案,因为视图可以过滤行和列。这个想法是基础表不能直接访问。视图是,因此所有访问都需要通过视图。