Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
选择表格';只有在mySQL中有特定元素时才使用名称_Mysql_Sql - Fatal编程技术网

选择表格';只有在mySQL中有特定元素时才使用名称

选择表格';只有在mySQL中有特定元素时才使用名称,mysql,sql,Mysql,Sql,我有一个未定义数量的表(x)。如何使SQL仅检索包含特定记录的表的名称?(y) 您不能一步到位,因为SQL语言要求在准备查询时固定表。不能编写一个查询未定义数量的表的查询 我必须指出,如果您需要查询未定义数量的表,那么这听起来可能是一个有缺陷的设计。这不是一个坏设计的保证,因为每个规则都有例外,但可能是坏设计 无论如何,我推荐的解决方案是从查询信息模式开始,查找包含要搜索的列的表 SELECT table_schema, table_name FROM INFORMATION_SCHEMA.CO

我有一个未定义数量的表(x)。如何使SQL仅检索包含特定记录的表的名称?(y)

您不能一步到位,因为SQL语言要求在准备查询时固定表。不能编写一个查询未定义数量的表的查询

我必须指出,如果您需要查询未定义数量的表,那么这听起来可能是一个有缺陷的设计。这不是一个坏设计的保证,因为每个规则都有例外,但可能是坏设计

无论如何,我推荐的解决方案是从查询信息模式开始,查找包含要搜索的列的表

SELECT table_schema, table_name
FROM INFORMATION_SCHEMA.COLUMNS
WHERE column_name = 'phone_number';
该查询将返回一些匹配项。然后,您可以编写应用程序代码来循环结果,将模式/表名插入到单独的查询中

PHP中的示例:

while ($row = $stmt->fetch()) {
    $sql = sprintf("SELECT * FROM `%s`.`%s` WHERE phone_number = ?",
      $row["table_schema"], $row["table_name"]);
    $stmt2 = $pdo->prepare($sql);
    $stmt2->execute([$phone_number]);
    $results[] = $stmt2->fetchAll();
}

您不能一步到位,因为SQL语言要求在准备查询时固定表。不能编写一个查询未定义数量的表的查询

我必须指出,如果您需要查询未定义数量的表,那么这听起来可能是一个有缺陷的设计。这不是一个坏设计的保证,因为每个规则都有例外,但可能是坏设计

无论如何,我推荐的解决方案是从查询信息模式开始,查找包含要搜索的列的表

SELECT table_schema, table_name
FROM INFORMATION_SCHEMA.COLUMNS
WHERE column_name = 'phone_number';
该查询将返回一些匹配项。然后,您可以编写应用程序代码来循环结果,将模式/表名插入到单独的查询中

PHP中的示例:

while ($row = $stmt->fetch()) {
    $sql = sprintf("SELECT * FROM `%s`.`%s` WHERE phone_number = ?",
      $row["table_schema"], $row["table_name"]);
    $stmt2 = $pdo->prepare($sql);
    $stmt2->execute([$phone_number]);
    $results[] = $stmt2->fetchAll();
}

多谢各位。但是我不能使用这个解决方案,因为所有的表都包含相同的列。但其中一些表在其中一列中包含特殊值。这个数据库中有很多表,所以我认为请求会非常慢

谢谢。但是我不能使用这个解决方案,因为所有的表都包含相同的列。但其中一些表在其中一列中包含特殊值。这个数据库中有很多表,所以我认为请求会非常慢