繁体   English   中英

SQL查询找到表名

[英]SQL query to find the table name

我的dB中有5个不同的表,其结构为Name|Price|Id..

我有独特的价格和ID输入组合。

使用这些2,可能会有什么SQL查询来获取存在该条目的表的名称?

我需要获取此表的名称以更新Price的值。

您确实应该正确地规范化数据库并使用单个表,但是如果您确实需要kludge,则:

SELECT name, brand, id, 'Tea' as tablename
  FROM TableTea
 WHERE brand = 'abc'
   AND id = 100
UNION
SELECT name, brand, id, 'Coffee' as tablename
  FROM TableCoffee
 WHERE brand = 'abc'
   AND id = 100
UNION
SELECT name, brand, id, 'Chocolate' as tablename
  FROM TableChocolate
 WHERE brand = 'abc'
   AND id = 100

如果您要添加新产品,就必须更改它

如果您的DBMS是MySQL,则可以使用以下查询:

SELECT Result.TABLE_NAME FROM (
  SELECT  TABLE_NAME,COLUMN_NAME,COUNT(*) AS QTA FROM INFORMATION_SCHEMA.COLUMNS  
  where  TABLE_SCHEMA = 'NAME_DB'
  and COLUMN_NAME IN ('Name','Price','Id')
  GROUP BY TABLE_NAME
 ) as Result
WHERE Result.QTA = 3

我已经尝试过不用php

用您的数据库替换NAME_DB。

您首先需要知道可以在其中包含条目的表。 使用循环遍历这些表并运行查询,每次返回结果集并测试结果集中是否存在记录。 这将告诉您哪些表具有该条目。

一般的做法:

$array = array("table1", "table2", "table3", "table4", "table5");
foreach($array as $table) {
    //build your query using the table name
    $query = "SELECT something FROM " .  $table;
    //exec your query against your db and return results
    //test if records exist in result set.  If true, you know the table name based on the loop iteration ($table).
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM