Mysql UNION 的方式与哪个表结果行不同



假设我有以下查询。

SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;

免得说两张桌子上都有一个相同的城市纽约女巫会给我:

| City     |
| -------- | 
| NY       |
| NY       |

我正在 HTML 表中获取它,有没有办法与女巫 MySQL 表结果行不同,而不是在表本身中制作另一列,例如列type.

也许可以在查询中将某些内容附加到结果集本身?

我不明白你的结果,因为union删除重复项,所以它应该只产生一行。

如果要包含表名,我建议使用select distinctunion all

SELECT DISTINCT 'customers' as type, City FROM Customers
UNION ALL
SELECT DISTINCT 'suppliers' as type, City FROM Suppliers
ORDER BY City;

附加一个额外的列,将文本字符串值作为表名与现有查询一起追加。这将帮助您区分行。

SELECT 'Customers' as Type, City FROM Customers
UNION ALL
SELECT 'Suppliers' as Type, City FROM Suppliers
ORDER BY City;

更新:UNION删除重复的行。因此,如果您的表在City列中具有相同的值,它将返回唯一行。你必须使用UNION ALL.这将返回所有行并将字符串文本追加为类型列将帮助您区分行。

感谢@Gordon指出这一点。

添加一个包含文本值的额外列,具体取决于它是哪个子查询。

SELECT 'Customers' AS type, City
FROM Customers
UNION
SELECT 'Suppliers' AS type, City
FROM Suppliers
ORDER BY City, type

您可以在查询中添加列,如下所示。

SELECT city, 'c' as type FROM Customers
UNION
SELECT city, 's' as type FROM Suppliers
ORDER BY city, type;

最新更新