在mySQL show语句中使用“notlike”

在mySQL show语句中使用“notlike”,mysql,sql-like,columnname,show-sql,Mysql,Sql Like,Columnname,Show Sql,我有一个dropdownlist,它由基于用户在上一个下拉列表中选择的表名的列名填充。我正在使用以下查询 显示abcTableName中的列,如“%name”,它可以工作 我想所有的都包括所有的列名,除了一些列。因此,我想要这样的查询 SHOW columns from abcTable NOT LIKE ('%name','%pk','%fk') 这是行不通的。甚至 SHOW columns from abcTable NOT LIKE '%name' 不起作用 目前,我运行了两个

我有一个dropdownlist,它由基于用户在上一个下拉列表中选择的表名的列名填充。我正在使用以下查询

显示abcTableName中的列,如“%name”,它可以工作

我想所有的都包括所有的列名,除了一些列。因此,我想要这样的查询

SHOW columns from abcTable NOT LIKE ('%name','%pk','%fk')  
这是行不通的。甚至

SHOW columns from abcTable NOT LIKE '%name'  
不起作用

目前,我运行了两个循环来获取列名——外部循环来传递表名,内部循环来传递参数到查询,这需要花费大量时间。我希望对其进行优化


有人可以提出建议吗?

您可以使用更正式的方法:

SELECT COLUMN_NAME
FROM information_schema.columns
WHERE 
    table_schema = '[database]' AND
    table_name = '[table_name]' AND
    COLUMN_NAME LIKE '%name' AND
    COLUMN_NAME NOT LIKE '%pk' AND
    COLUMN_NAME NOT LIKE '%fk';
使用where子句

SHOW columns from abcTable where field not like '%name'  
查看扩展以显示语句

第一个解决方案说您的SQL语法有错误;检查与您的MySQL对应的手册。第二个函数给出以下消息:操作数应包含1columns@ALearner我的代码未经测试,但您可以看到上面的代码现在应该为您运行。谢谢。这也会有所帮助。我希望我能接受这两种解决方案作为答案。你能展示一下你的表结构,让我们看看所有的列吗?