MySQL:从多个结构相同但数据不同的表中选择数据
在管理大型数据集时,经常需要将数据存储在多个表中用于本地化或分区目的的具有相同架构的表。然而,从多个表中提取数据同时保持特定的排序顺序可能会带来挑战。
问题:WHERE 子句中出现不明确的列错误
考虑以下 MySQL 语句:
SELECT * from us_music, de_music where `genre` = 'punk'
此查询尝试连接来自两个表 us_music 和 de_music 的数据,基于在流派列上,该列存在于两个表中。但是,MySQL 返回以下错误:
#1052 - Column 'genre' in where clause is ambiguous
解决方案:使用 UNION 子句
要解决歧义,可以使用 UNION 子句。 UNION 子句将多个 SELECT 语句的结果组合成一个结果集。以下是在这种情况下如何使用它:
(SELECT * from us_music where `genre` = 'punk') UNION (SELECT * from de_music where `genre` = 'punk')
此查询首先从 us_music 中选择流派等于“punk”的数据,然后对 de_music 执行相同的操作。然后,两个 SELECT 语句的结果将组合成一个结果集。
对组合结果进行排序
组合数据后,您可以指定排序顺序在 UNION 语句后添加 ORDER BY 子句:
(SELECT * from us_music where `genre` = 'punk') UNION (SELECT * from de_music where `genre` = 'punk') ORDER BY `band_name`
此查询将合并两个表中的数据并对结果进行排序基于 band_name 列。
以上是如何高效地从多个相同结构的MySQL表中选取数据?的详细内容。更多信息请关注PHP中文网其他相关文章!