如何将不相关的表与临时列聚合

时间:2015-01-08 20:32:59

标签: php mysql database select

这是一个艰难的饼干。我有两个不相关的表 - 蔬菜水果。我想知道是否可以在一个MySQL查询中执行以下所有步骤:

两个表中的

1)SELECT ID 名称

2)将临时列值 - tmp_type - 附加到(1)中找到的每一行。蔬菜类型= 1,水果= 2。

3)汇总两个表格和ORDER BY 名称的结果。

所以,像这样:

enter image description here

有什么想法吗?我真的想在数据库级别上进行,而不是在PHP控制器中操作两个表结果,但我不确定实现目标的最佳方法是什么。

2 个答案:

答案 0 :(得分:2)

联盟查询:

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

答案 1 :(得分:2)

作为注释:子查询不是必需的。这也应该有效:

SELECT id, name, 2 AS tmp_type
FROM fruit 
UNION ALL
SELECT id, name, 1 AS tmp_type
FROM vegetable
ORDER BY name;