假设我有以下查询。
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;
至少要说在两个桌子上都有一个纽约市,女巫会给我的:
| City |
| -------- |
| NY |
| NY |
我正在HTML表中获取此信息,有没有办法与MySQL表结果行的来源不同,然后在表本身中创建另一列,例如列type
。
也许可以在查询结果本身中添加一些内容?
我不明白您的结果,因为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;
与现有查询一起,在附加列中附加文字字符串值作为表名。这将帮助您区分行。
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' FROM Suppliers
ORDER BY city, type;