我想从多个表中检索唯一数据,我也希望用记录显示其表名

时间:2017-07-14 11:03:13

标签: mysql

这是我从3个表中获取唯一值的查询

mysql> SELECT DISTINCT * FROM  (SELECT DISTINCT * FROM TEMP UNION  SELECT DISTINCT * FROM TEMP2 UNION  SELECT DISTINCT * FROM TEMP3)t;
+---------+-------------+-----------------------+
| FNAME   | LNAME       | EMAIL                 |
+---------+-------------+-----------------------+
| Aamir   |  khan       |  xyz@gmail.com        |
| Faiyaz  |  Ahmed      |  abc@gmail.com        |
| Shakeeb |  Uddin      |  pqr@gmail.com        |
| siri    | hema        |  sirihema@aptroid.com |
| sravani |  mettupalle |  sra@aptroid.com      |
| Faiyaz  |  Ahmed      |  abc@yahoo.com        |
+---------+-------------+-----------------------+
6 rows in set (0.00 sec)

现在我还要显示其表名以及它所属的已检索记录。 请帮我解决从多个表中检索唯一值的最佳查询以及上面提到的查询。谢谢。

1 个答案:

答案 0 :(得分:1)

使用计算列:

SELECT DISTINCT *
FROM
(
    SELECT FNAME, LNAME, EMAIL, 'TEMP' AS table_source UNION
    SELECT FNAME, LNAME, EMAIL, 'TEMP2'                UNION
    SELECT FNAME, LNAME, EMAIL, 'TEMP3'
) t;

这个技巧起作用的原因是因为我们在选择它时会“知道”每个联合查询中的表名。