1

我有一个查询

$STH_1 = $DBH_R->query("SELECT table_name                        
                         FROM information_schema.tables                        
                        WHERE table_name                        
                         LIKE 'v_c_ei\_9%'
                         ");

$stmts_1 = array();

while (($row_1 = $STH_1 -> fetch_assoc()) !== null){
$table_name = $row_1['table_name'];

此查询的结果通常是按顺序排列的表列表:

v_c_ei_9001
v_c_ei_9002
...........
v_c_ei_9030

在另一个表中v_c_country,我有 2 列:table_namecountry_name,(例如, v_ei_c_9001Australiav_ei_c_9012Great Britain等)

通常,因此,我需要来自上述查询的表(表名)列表,但在 ORDER ASC 中来自 table 的国家/地区名称v_c_country

如何更改查询?

4

2 回答 2

1
SELECT t.table_name                        
  FROM information_schema.tables AS t
  JOIN v_c_country               AS c ON t.table_name = c.table_name
 WHERE t.table_name LIKE 'v_c_ei\_9%'
 ORDER BY c.country_name ASC;

对于测试和验证,添加c.country_name到选择列表。

于 2012-05-12T16:47:00.740 回答
0

你没有。MySQL 中的规则是,您永远不能混合数据(例如存储在表中的国家/地区名称)和元数据(例如表名)。

您可以做的是使用存储过程来滥用语句准备作为动态 SQL。这已在此处多次描述。

于 2012-05-12T14:02:56.927 回答