使用内部查询中的列名选择要在外部查询中显示的列

时间:2018-04-08 08:53:54

标签: mysql sql python-3.x pymysql

我的场景如下(在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中执行此操作?

2 个答案:

答案 0 :(得分:0)

我强烈建议你也阅读这篇文章。您应该首先在变量中存储列或使用动态SQL查询。 Use SELECT result as COLUMN name in other SELECT

BTW你的架构甚至不在1 NF中,因为你在表1中没有原子值。你应该避免这种情况。

答案 1 :(得分:0)

MySQL支持使用标准grant语句向用户授予列级权限。

我建议您从这个主题的documentation开始。

对列使用grant的替代方法是为不同的用户类型创建视图。事实上,这是更通用的解决方案,因为视图可以过滤行和列。这个想法是基础表不能直接访问。视图是,因此所有访问都需要通过视图。