我想做一件很简单的事,安装脚本。我的问题是,在MySQL中是否有一种简单的内置方式将SELECT查询的输出与DROP用户或database脚本的输入结合起来?
例如,如果我想删除所有密码为空的用户。我怎么能用DROP语句来做到这一点呢?我知道一个明显的解决方案是运行所有的东西,例如从Python脚本中运行,
mysql -Bse "select..."运行查询在一个简单的SQL查询中是否有一种简单的方法?我在这里看到了一些例子,但我不认为它很简单:https://stackoverflow.com/a/12097567/518169
您建议进行组合查询,还是只使用Python或bash脚本/sed解析输出?
发布于 2012-09-09 21:34:27
您可以动态构建SQL,例如:
SELECT CONCAT('DROP USER ', GROUP_CONCAT(QUOTE(User), '@', QUOTE(Host)))
INTO @sql
FROM mysql.user
WHERE PASSWORD = ''然后从它获得准备一份声明:
PREPARE stmt FROM @sql然后执行该语句:
EXECUTE stmt最后,释放准备好的语句:
DEALLOCATE PREPARE stmt发布于 2018-12-11 13:37:20
我的解决方案是使用--skip-column-names标志并将SELECT CONCAT(..)查询的输出返回到另一个mysql会话:
echo 'select concat("DROP USER ",user,"@\"",host,"\";") from mysql.user where User = "alex"' \
| mysql -uroot --skip-column-names \
| mysql -uroothttps://stackoverflow.com/questions/12342448
复制相似问题