mysql - 在 MySQL 中将列名作为参数传递

标签 mysql database

是否可以这样做:

SELECT template_id as id FROM templates WHERE ? IN template_allowed_parent_templates

所以我想看看给定的 ID 是否在列中。 如果没有,我该如何仅使用 MySQL 来解决这个问题?

最佳答案

就在 MySQL 中将列名作为参数传递(标题中的问题)而言,这在 SQL 语句中是不可能的。 SQL 语句中的标识符(例如表名和列名)必须是 SQL 文本的一部分。这些不能通过绑定(bind)占位符传入。

IN 比较运算符需要一个包含在括号中的值列表,或者一个包含在括号中并返回一组值的 SELECT 查询。

不清楚您要做什么。

我怀疑 template_allowed_pa​​rent_templates 是表中的一列,它包含一个逗号分隔的值列表。 (不寒而栗。)

我怀疑您可能正在寻找 MySQL FIND_IN_SET 字符串函数,它将“搜索”以逗号分隔的列表中的特定值。

作为一个简单的演示:

  SELECT FIND_IN_SET('5', '2,3,5,7')
       , FIND_IN_SET('4', '2,3,5,7')

当“找到”指定值时,该函数返回一个正整数。您可以在谓词中使用该函数,例如

WHERE FIND_IN_SET(id,template_allowed_parent_templates)

WHERE FIND_IN_SET( ? ,template_allowed_parent_templates)

(这是有效的,因为在 MySQL 中,正整数在 bool 上下文中被评估为 TRUE。)

我只是在猜测你想要完成什么。

关于mysql - 在 MySQL 中将列名作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35879772/

相关文章:

mysql - 根据满足的所有条件进行选择(关系部门)

php - 使用 MySQL 5.6 在 JSON 对象中搜索属性

php - 应用程序代码重新设计以减少编号。从性能角度看数据库命中率

mysql - 在 mysql 容器中提交数据

php - MySQL统一ID相关查询优化

mysql - 如何在MySQL中只向新用户授予少量权限(仅执行DML和DDL语句)?

php - 使用 mysql php 从表中删除商品

php - Codeigniter 调用成员函数错误

php - 通过 PHP 中的 session 进行用户身份验证,是否需要 .htaccess?

sql - 使用 UNION 的自定义结果顺序 - SQL