mysql 怎么按照条件distinct 字段?

我有一个表:

domain     loc 
a.org  华北联通
b.org  华北联通
b.org  华东电信
c.org  西南电信
c.org  西南移动 
c.org  华东移动
d.org  华中电信
d.org  西北联通
e.org  境内 
f.org  境外
.... 

我想得到的结果是:
将域名给distict 出来,但是要满足区分出境内(eg. 西北联通 华中电信 境内 这些都是境内 )境外

也就是说,
如果结果可能是domain有重复(但是loc是有境外的)

a.com 西南连通
a.com 境外
b.com 西北电信
c.com 西南电信
...

请问SQL如何写才对呢?


我使用查询语句查询loc的种类有:

select distinct loc from result;

得到的loc结果:

西南联通
华北联通
华东电信
西南电信
西南移动
华东移动
华中电信
华中联通
华北移动
华东联通
华南电信
东北电信
西北联通
华北电信
东北移动
华南移动
默认
华中移动
西北电信
西北移动
东北联通
华南联通
境内
华北
东北
西北
电信
联通
移动
西南
华南
华东
华中
境外
阅读 1.8k
1 个回答

对你的描述不是很明白,如果只是想要按这两列来去重,distinct本身是支持的
数据
image.png
SELECT DISTINCT domain,loc FROM url
image.png

另外境内和境外不应该单独一个字段或者单独一个表表示吗

如果可以加个字段表示是否是境外,就这样:
select distinct domain,isout from url
如果确定只有loc="境外"是境外(这样不合理)就这样:

SELECT DISTINCT domain FROM url WHERE loc = "境外" union all (select DISTINCT domain from url where loc != "境外")
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题