+-

是否可以做这样的事情:
SELECT template_id as id FROM templates WHERE ? IN template_allowed_parent_templates
所以我想看看给定的ID是否在该列中.
如果没有,我该如何仅使用MySQL来解决此问题?
最佳答案
至于将列名作为参数传递给MySQL(标题中的问题),在SQL语句中是不可能的. SQL语句中的标识符(例如表名和列名)必须是SQL文本的一部分.那些不能与绑定占位符一起传递.
IN比较运算符期望用括号括起来的值的列表,或者用括号括起来的SELECT查询返回一组值.
目前尚不清楚您要做什么.
我怀疑template_allowed_parent_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中,在布尔上下文中将一个正整数评估为TRUE.)
我只是在猜测您要实现的目标.
点击查看更多相关文章
转载注明原文:在MySQL中将列名作为参数传递 - 乐贴网