如何用临时列聚合不相关的表
How to aggregate unrelated tables with temporary column
这是一块硬饼干。我有两个不相关的 tables - vegetable 和 fruit。我想知道是否可以在一个 MySQL 查询中执行以下所有步骤:
1) SELECT
id 和 name 来自 tables.
2) 将临时列值 - tmp_type - 添加到 (1) 中找到的每一行。蔬菜类型table = 1,水果= 2.
3) tables 和 ORDER BY
name.
的聚合结果
所以,像这样:
有什么想法吗?我真的很想在数据库级别上执行此操作,而不是在 PHP 控制器中操作两个 table 结果,但我不确定实现目标的最佳方法是什么。
联合查询:
SELECT * FROM (
SELECT id, name, 2 AS tmp_type
FROM fruit
UNION ALL
SELECT id, name, 1 AS tmp_type
FROM vegetable
) AS foo
ORDER BY name
请注意,我正在使用子查询进行排序。您可以直接在联合内进行排序,但语法有点不稳定 - 寻找应该是一个简单示例的内容:http://dev.mysql.com/doc/refman/5.0/en/union.html
注意:子查询不是必需的。这也应该有效:
SELECT id, name, 2 AS tmp_type
FROM fruit
UNION ALL
SELECT id, name, 1 AS tmp_type
FROM vegetable
ORDER BY name;
这是一块硬饼干。我有两个不相关的 tables - vegetable 和 fruit。我想知道是否可以在一个 MySQL 查询中执行以下所有步骤:
1) SELECT
id 和 name 来自 tables.
2) 将临时列值 - tmp_type - 添加到 (1) 中找到的每一行。蔬菜类型table = 1,水果= 2.
3) tables 和 ORDER BY
name.
所以,像这样:
有什么想法吗?我真的很想在数据库级别上执行此操作,而不是在 PHP 控制器中操作两个 table 结果,但我不确定实现目标的最佳方法是什么。
联合查询:
SELECT * FROM (
SELECT id, name, 2 AS tmp_type
FROM fruit
UNION ALL
SELECT id, name, 1 AS tmp_type
FROM vegetable
) AS foo
ORDER BY name
请注意,我正在使用子查询进行排序。您可以直接在联合内进行排序,但语法有点不稳定 - 寻找应该是一个简单示例的内容:http://dev.mysql.com/doc/refman/5.0/en/union.html
注意:子查询不是必需的。这也应该有效:
SELECT id, name, 2 AS tmp_type
FROM fruit
UNION ALL
SELECT id, name, 1 AS tmp_type
FROM vegetable
ORDER BY name;