MYSql选择与排除(不在和不喜欢的问题)

时间:2018-03-02 17:40:55

标签: mysql

我正在尝试选择所有列名,不包括那些包含字符串" 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%' ...

2 个答案:

答案 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")
 }
}