mysql - 来自三个不同表的唯一数据

标签 mysql sql

我有三个名为“公共(public)”、“私有(private)”和“正常”的表。私有(private)表的优先级高于普通表和公共(public)表。每个表可能有也可能没有重复数据。我的问题是 如果所有表都有相同的数据,则它应该仅从高优先级表返回,而不是从所有表返回。 例如

PRIVATE TABLE
==============================
id           |  Mobileno
==============================
1            | 9999999999
------------------------------
2            | 8888888888
------------------------------


NORMAL TABLE
==============================
id           |  Mobileno
==============================
1            | 9999999988
------------------------------
2            | 8888888888
------------------------------


PUBLIC TABLE
==============================
id           |  Mobileno
==============================
1            | 9999999977
------------------------------
2            | 8888888888
------------------------------

我想要这样的结果

==============================
 Mobileno      |  type
==============================
 9999999999    | private
------------------------------
 8888888888    | private
------------------------------
 9999999988    | normal
------------------------------
 9999999977    | public

最佳答案

尝试这个查询:

select t1.Mobileno,
case when t1.Mobileno in (select Mobileno from PRIVATE) then 'PRIVATE' 
when t1.Mobileno not in (select Mobileno from PRIVATE) 
and t1.Mobileno in (select Mobileno from NORMAL) then 'NORMAL'
else 'PUBLIC' end as type
from
(select * from PRIVATE
union
select * from NORMAL
union
select * from PUBLIC)t1;

SQL Fiddle

关于mysql - 来自三个不同表的唯一数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21965744/

相关文章:

mysql 处理树

mysql - char_length()和character_length()有什么区别

mysql - 如何处理 Golang 中插入重复键的错误?

SQL强制插入虚拟数据

PHP MySQL 数据库 - 将所有行放入多维数组

php - 如何在一个 MySQL 查询中从不同的表中进行选择?

c# - 我得到数据绑定(bind) : 'System.Data.DataRowView' does not contain a property with the name 'productID'

sql - 如何在 SQL Server 中使用带有框架的窗口函数执行 COUNT(DISTINCT)

python - 带随机化的加权数据库查询

mysql - VARCHAR 字段上的 SUM 转换为 DECIMAL 不在小数点后添加数字