mysql联合方式,以区别于哪个表结果行

im9ewurl  于 2021-08-09  发布在  Java
关注(0)|答案(4)|浏览(308)

假设我有下面的问题。

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

免得说两张table上都有一个城市,巫婆会给我:

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

我是在一个html表中获取的,有没有一种方法不同于witchmysql表的结果行是从什么,然后在表本身中生成另一列,例如column type .
也许可以在查询中向结果集本身附加一些内容?

ctzwtxfj

ctzwtxfj1#

我不明白你的结果,因为 union 删除重复项,因此它应该只生成一行。
如果要包含表名,我建议使用 select distinct 以及 union all :

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

ygya80vv2#

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

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

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

pcww981p

pcww981p3#

根据所属子查询,添加一个包含文字值的额外列。

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

5sxhfpxr4#

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

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

相关问题