2012-03-23 77 views
1
(SELECT field1 FROM Table1) UNION 
(SELECT field1 FROM Table2); 

这将从两个表中获取所有行。 有没有办法将表名添加到结果中,以便更容易地看到记录来自哪里?例如使用IF table1然后预先记录一个字符串?MYSQL UNION - 使用mysql字符串函数?

的示例记录我目前得到的是

banana 

我想

t1-banana or t2-banana 
+1

我们**不知道**您的表格是什么样的...... – Neal 2012-03-23 14:32:20

+0

您为什么需要这个? – 2012-03-23 14:34:11

+0

这将使联盟运营商中的一件事无效,因为那么将会(可能)是所有唯一的行 – Habib 2012-03-23 14:36:56

回答

2
(SELECT CONCAT("t1-", field1) FROM Table1) 
UNION 
(SELECT CONCAT("t2-", field1) FROM Table2); 
1
(SELECT Concat(field1 , '-Table1') FROM Table1) UNION 
(SELECT Concat(field1 , '-Table2') FROM Table2); 
+2

'+'在SQL-Server中作为一个串联运算符,而不是MySQL。 – 2012-03-23 14:35:44

+0

要在MySQL中连接字符串,请使用'CONCAT'。 – 2012-03-23 14:36:08

+0

非常感谢,以为我表达了这个想法;) – Habib 2012-03-23 14:39:35

4

您可以添加表名作为第二列的值:

(SELECT field1, 'Table1' AS table_name FROM Table1) 
UNION 
(SELECT field1, 'Table2' AS table_name FROM Table2); 
+1

+1,这比'CONCAT'更好。 – 2012-03-23 14:37:13

+0

+1,在MySQL端更快,使用PHP更容易检查 – 2012-03-23 15:25:49

+0

是的。 Rocket正确回答了我的问题,但我在代码中使用了这个答案,因为它对我来说更快。谢谢 – Harry 2012-03-23 15:27:25

2
(SELECT field1, 't1' as table_name FROM Table1) 
UNION  
(SELECT field1, 't2' as table_name FROM Table2); 
+1

+1,这可能比使用'CONCAT'更好。 – 2012-03-23 14:39:03