[英]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.