来自多个表MySQL的常用列名

时间:2014-07-14 10:29:53

标签: php mysql

您好我有多个产品表,例如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)

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

2 个答案:

答案 0 :(得分:2)

是的,您可以使用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

答案 1 :(得分:0)

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