合并2个表的数据,以便遵循确定的顺序

时间:2016-02-16 12:14:18

标签: mysql union

我有2个MySQL表

firstTable

 |Name   |    Value |
----------------------------
 |Martin |    Yes   |
 |Joseph |    Yes   |
 |Joseph |    Yes   |
 |Jack   |    No    |

secondTable

 |Name           |    Value |
---------------------------------------
 |Joseph Desouza |    Yes   |
 |Joseph Desouza |    Yes   |

" firstTable"的规范它包含所有类型的记录 " secondTable"的规范它是否仅包含" Joseph Dezouza"

的记录

现在,我如何通过MySql查询获取最终结果数组,以便得到如下的合并结果,这样Joseph的列表应首先出现,然后应该开始列出Joseph Desouza

 |Name           |    Value |
 ----------------------------
 |Martin         |    Yes   |
 |Joseph         |    Yes   |
 |Joseph         |    Yes   |
 |Joseph Desouza |    Yes   |
 |Joseph Desouza |    Yes   |
 |Jack           |    No    |

我理解的唯一一件事就是我可以使用Union来解决这个问题,但无法弄清楚如何使序列正确。

3 个答案:

答案 0 :(得分:1)

使用以下内容:

SELECT * FROM
    (SELECT * FROM firstTable
    UNION ALL
    SELECT * FROM secondTable) a
ORDER BY Name DESC;

这给出了这个顺序:

Name           value
-------------------
Martin          Yes
Joseph Desouza  Yes
Joseph Desouza  Yes
Joseph          Yes
Joseph          Yes
Jack            No

或者您可以指定所需的订单(在这种情况下,您应该已经知道值!!)

SELECT * FROM
    (SELECT * FROM firstTable
    UNION ALL
    SELECT * FROM secondTable) a
ORDER BY FIELD(Name, "Martin", "Joseph", "Joseph Desouza", "Jack");

这将给出:

Name           value
-------------------
Martin          Yes
Joseph          Yes
Joseph          Yes
Joseph Desouza  Yes
Joseph Desouza  Yes
Jack            No

如果FIELD中没有包含某些值,默认情况下它们将首先以ASC顺序列出!!

答案 1 :(得分:1)

两个表都应该具有相同的字段:

//create new stage
Stage stage1 = new Stage();
stage1.addActor(oldScreen.playButton);
Gdx.input.setInputProcessor(stage1);

答案 2 :(得分:0)

通过使用UNION,我们无法显示所有值,因为UNION不允许重复值。因此,使用UNION ALL获取所有数据