我正在尝试选择所有列名,不包括那些包含字符串" id"的列名。例如id,project_id,client_id。我使用NOT LIKE而不是IN,但由于某种原因,我仍然得到所有列。它与使用information_schema,任何想法有关吗?
SELECT TABLE_NAME, `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE
`COLUMN_NAME` NOT IN('id', 'project_id')
AND `TABLE_SCHEMA`= 'projects' AND `TABLE_NAME`='building' OR
TABLE_NAME = 'characteristics'
另外
Select .. WHERE COLUMN_NAME NOT LIKE '%id%' ...
答案 0 :(得分:0)
您可以使用左连接列上的列ID并检查column_name null
SELECT TABLE_NAME, `COLUMN_NAME`
FROM `INFORMATION_SCHEMA`.`COLUMNS` T1
left join (
select TABLE_NAME.`COLUMN_NAME`
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `COLUMN_NAME` like '%id%'
) T2 on T1.TABLE_NAME = T2.TABLE_NAME AND T1.COLUMN_NAME = T2.COLUMN_NAME
WHERE T2.COLUMN_NAME is null
答案 1 :(得分:0)
这可能是一个很好的例子,可以使用正则表达式匹配结束的列名,而不是包含' id'。
class Trivials(s:String){
private val x = 0
}
object Trivials {
def main(args: Array[String]): Unit = {
Trivials t = new Trivials("Trivials")
}
}