MySQL扣脑袋的一个查询题

解决一个复杂的SQL问题,通过巧妙地使用逻辑运算符而非传统异或,筛选出特定条件的国家,如面积大人口少的澳大利亚和人口多面积小的印度尼西亚。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL起步小白在sqlzoo上遇到一个扣脑袋的题,在此分享:

Exclusive OR (XOR). Show the countries that are big by area (more than 3 million) or big by population (more than 250 million) but not both. Show name, population and area.

Australia has a big area but a small population, it should be included.
Indonesia has a big population but a small area, it should be included.
China has a big population and big area, it should be excluded.
United Kingdom has a small population and a small area, it should be excluded.

中文:

异或(XOR)。显示按面积大(超过300万)或按人口大(超过2.5亿)大的国家,但不能同时显示这两个国家。显示姓名,人口和面积。

澳大利亚有一个很大的地区,但人口少,应列入。
印度尼西亚人口众多,但面积很小,应该包括在内。
中国人口众多,面积很大,应该排除在外。
英国人口少,面积小,应该排除在外。

数据表:
在这里插入图片描述
就一直在扣这个异或怎么写,用^符号为什么不对,为什么用xor也不对?直到现在还没搞懂。。。
所以我换了个思路:



select name, population, area from world where 
((area > 3000000) and (population < 250000000)) 
or (area < 3000000) and (population > 250000000);


这样就完美解决问题。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值