首页 >数据库 >mysql教程 >如何在 MySQL 中使用动态 SQL 从具有相似前缀的列中选择数据?

如何在 MySQL 中使用动态 SQL 从具有相似前缀的列中选择数据?

Linda Hamilton
Linda Hamilton原创
2024-11-03 08:38:021066浏览

How to Select Data from Columns with Similar Prefixes using Dynamic SQL in MySQL?

用于通配符列选择的动态 SQL

问题:

假设你有一个数据库表多个列共享相似的前缀,例如“水果”和“蔬菜”。如何在不手动指定每个列名的情况下,高效地从以特定单词开头的所有列中选择数据?

示例:

考虑以下表结构:

<code class="markdown">Foods | Fruit | Vegetable
----------------------
Apples | Banana | Carrots
Pears | Grapes | Potatoes
Oranges | Lemon | Tomatoes</code>

您希望选择名称以“Vegetable”开头的所有列。

答案:

MySQL 查询中的直接通配符替换,例如 SELECT菜%,不支持。要动态选择满足此条件的所有列,您可以根据从数据库模式获取的信息构建 SQL 查询。这是一个解决方案:

<code class="sql">SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'Foods'
  AND table_schema = 'YourDB'
  AND column_name LIKE 'Vegetable%'</code>

此查询检索 Foods 表中以“Vegetable”开头的所有列的名称。然后,您可以使用此信息动态构建第二个查询,从所需列中选择数据:

<code class="php">$columnList = mysql_query($columnsQuery);
$columnArray = array();
while ($row = mysql_fetch_assoc($columnList)) {
  array_push($columnArray, $row['COLUMN_NAME']);
}
$columns = implode(",", $columnArray);

$query = "SELECT " . $columns . " FROM Foods";</code>

通过执行此查询,您可以从名称以“Vegetable”开头的列中检索所有数据一次通过。

以上是如何在 MySQL 中使用动态 SQL 从具有相似前缀的列中选择数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn