这是一个艰难的饼干。我有两个不相关的表 - 蔬菜和水果。我想知道是否可以在一个MySQL查询中执行以下所有步骤:
两个表中的 1)SELECT
ID 和名称。
2)将临时列值 - tmp_type - 附加到(1)中找到的每一行。蔬菜类型= 1,水果= 2。
3)汇总两个表格和ORDER BY
名称的结果。
所以,像这样:
有什么想法吗?我真的想在数据库级别上进行,而不是在PHP控制器中操作两个表结果,但我不确定实现目标的最佳方法是什么。
答案 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;