这是我从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)
现在我还要显示其表名以及它所属的已检索记录。 请帮我解决从多个表中检索唯一值的最佳查询以及上面提到的查询。谢谢。
答案 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;
这个技巧起作用的原因是因为我们在选择它时会“知道”每个联合查询中的表名。