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

Merging the Data of 2 Tables such that a definite sequence is followed

我有 2 MySQL 个表

第一个表

 |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 的列表德索萨

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

我唯一理解的是,我可以使用 Union 获得它,但不知道如何获得正确的序列。

使用以下内容:

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 顺序列在第一位!!

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

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

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