這是一個艱難的cookie。我有兩個不相關的表 - 蔬菜和水果。我不知道是否有可能做一個MySQL查詢以下所有步驟:如何將不相關的表格與臨時列彙總在一起
1)SELECT
ID和名兩個表。 2)向(1)中找到的每一行添加臨時列值 - tmp_type。蔬菜類型= 1,水果= 2。
3)來自兩個表和ORDER BY
的綜合結果名稱。
所以,這樣的事情:
任何想法?我真的想在數據庫級別上完成它,而不是在PHP控制器中操作兩個表結果,但我不確定實現該目標的最佳方式是什麼。
這是一個艱難的cookie。我有兩個不相關的表 - 蔬菜和水果。我不知道是否有可能做一個MySQL查詢以下所有步驟:如何將不相關的表格與臨時列彙總在一起
1)SELECT
ID和名兩個表。 2)向(1)中找到的每一行添加臨時列值 - tmp_type。蔬菜類型= 1,水果= 2。
3)來自兩個表和ORDER BY
的綜合結果名稱。
所以,這樣的事情:
任何想法?我真的想在數據庫級別上完成它,而不是在PHP控制器中操作兩個表結果,但我不確定實現該目標的最佳方式是什麼。
聯合查詢:
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;
是的,也行得通,很好。 – lesssugar
這樣做也會更有效率(至少在MySQL版本5.5和更早的版本中),因爲它避免了實現派生表的(不必要的步驟)。 – spencer7593
看看'你'使用**精確**定義'聯盟'它會做你想做的。 –