【问题标题】:Common Column Names from Multiple Tables MySQL来自多个表 MySQL 的公共列名
【发布时间】:2014-07-14 10:29:52
【问题描述】:

您好,我有多个产品表,例如 product_shirt、product_pants 等,在它之上还有一个通用产品表。无论如何,我遇到了一种情况,我需要通过从所有常见的表中选择一些字段来进行 UNION 查询。衬衫、裤子、包包等都有色域……

是否有任何查询可以获取多个表中存在的列名?我正在尝试谷歌它,但没有找到任何相关结果

谢谢

更新:

Table names : prod_rugs, prod_furniture, prod_accessories, prod_generic.

Colum names : color, size and (I want to know all the column names that exisits in all above mentioned table)

我不需要颜色或大小的值...我需要知道这些表中哪些字段是通用的

【问题讨论】:

  • 我想你没有得到我的问题。我需要知道常见的字段名称而不是值。颜色只是一个例子。我不知道我有多少共同领域。
  • 冒着问一个愚蠢问题的风险,裤子和衬衫有什么不同?

标签: php mysql


【解决方案1】:

是的,您可以为此使用INFORMATION_SCHEMA

SELECT 
  column_name, 
  table_name 
FROM 
  INFORMATION_SCHEMA.COLUMNS
WHERE 
  table_schema='test' 
GROUP BY 
  column_name 
HAVING 
  count(1)>1

您应该将test 替换为您的数据库或课程的名称。上面的查询将导致列名和表名出现多次 - 因此,比在一张表中出现的次数更多(因为,显然,一张表不能有多次同名的列)

如果你想要一些特定的表和列名,然后添加相应的条件:

SELECT 
  column_name, 
  table_name 
FROM 
  INFORMATION_SCHEMA.COLUMNS
WHERE 
  -- database name:
  table_schema='test' &&
  -- table names:
  table_name IN (
    'prod_rugs', 
    'prod_furniture', 
    'prod_accessories', 
    'prod_generic'
  ) &&
  -- column names:
  column_name IN (
    'color', 
    'size'
  )
GROUP BY 
  column_name 
HAVING 
  count(1)>1

【讨论】:

  • 我不确定他是不是问这个,虽然可以这样解释
  • 嗯,是否有任何查询可以获取多个表中存在的列名? - 这就是我解释该请求的方式
  • 我应该写什么来代替 column_name ?
  • 什么都没有。查询将查找列名。因此,搜索此类列是您的问题(只要我理解正确)
  • 错误代码:1054 'where 子句'中的未知列'stg_homebrandUSA' 执行时间:0 秒传输时间:0 秒总时间:0.004 秒 ------------- --------------------------------------
【解决方案2】:

您需要使用 sql join 来执行此操作。检查此链接 http://www.w3schools.com/sql/sql_join.asp

【讨论】:

    猜你喜欢
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多