如何选择比最长的短 x 个字符的行

问题描述 投票:0回答:1

我有一项学习任务,现在我已经把头撞在墙上至少一天了。 我对此完全陌生,只是学习基础知识。

这是我的作业:

使用 union 组合这些查询:

  • 选择城市和邮政编码都出现在供应商表中的客户。
  • 选择名称最多比最长供应商名称短五个字符的客户。

Northwind 数据库有问题。

这是我尝试过的:

select customername, customers.city, customers.postalcode
from customers 
join suppliers on customers.city = suppliers.city and customers.PostalCode = suppliers.PostalCode
union
select customername, customers.city, customers.postalcode
from customers 
where length(customername) < 
    (select max(length(suppliername)) 
    from suppliers)

问题在于最后一个“where 子句”。 我知道最长的供应商名称有 38 个字符:

(选择最大(长度(供应商名称)) 来自供应商)=38 个字符

但是我不知道如何查询“最多短五个字符”。

我通过查询得到了正确的结果集:

其中长度(客户名称)> 33

但显然这不是所要求的。

谢谢您的帮助:)

mysql where-clause max string-length northwind
1个回答
0
投票
select * 
from customers 
where exists
    (select *
    from suppliers
    where customers.city = suppliers.city and customers.postalcode = 
    suppliers.postalcode)
union
select *
from customers
where length(customername) >= 
(select max(length(suppliername)) from suppliers) - 5;

根据您的回答,我使它看起来像这样,结果集似乎是正确的。就像我说的,我对这一切都是全新的,希望尽快掌握基础知识。英语不是我的母语,所以这也让事情变得更有趣。

感谢所有回答我问题的人,这很有帮助,我希望我正确理解了一切......

© www.soinside.com 2019 - 2024. All rights reserved.