【问题标题】:How to filter based on a certain column in SQL?如何根据SQL中的某个列进行过滤?
【发布时间】:2021-11-09 00:20:09
【问题描述】:

我有以下问题:我想根据电话号码过滤客户列表。

我的实际输出:

id  firstname  lastname phonenumber creation date 
1      client    client   664433      2020/01/02
2      client    client   664433      2020/01/02
3      client    client   664432      2020/01/02
4      client    client   669433      2020/01/02
5      client    client   964433      2020/01/02
6      client    client   664033      2020/01/02

如您所见,有重复的电话号码。

我想要的输出应该是:

id  firstname  lastname phonenumber creation date 
1      client    client   664433      2020/01/02
2      client    client   664432      2020/01/02
3      client    client   669433      2020/01/02
4      client    client   964433      2020/01/02
5      client    client   664033      2020/01/02

这是我用来识别这些重复数字并将它们从我的输出中删除的代码:

select 
cc.id ,
cc."FirstName", 
cc."LastName", 
cc."PhoneNumber" as phone_number,
case when cc."PhoneNumber" is not null count(cc."PhoneNumber") else 0,
cc."CreationDate"
from souscritootest.public.clients_crm cc
having count(cc."PhoneNumber") = 1
;

问题是我从 IDE 得到这个反馈:SQL Error [42601]: ERROR: syntax error at or near "count" Position: 128

我想要做的是创建一个列,如果它是重复的,则标记为 1,如果不重复,则标记为 0。

谢谢!

【问题讨论】:

  • 我删除了不一致的数据库标签。请仅使用您真正使用的数据库进行标记。
  • 您能否提供示例数据和所需的输出,因为您的非工作查询中没有“我想根据他们的电话号码过滤客户列表”
  • 为什么不会您希望(select distinct cc."PhoneNumber" from souscritootest.public.clients_crm cc) 产生多个电话号码?
  • 如果客户有多个电话号码,您希望发生什么?
  • 轻松为您提供帮助:minimal reproducible example

标签: mysql sql sql-server


【解决方案1】:

要获得不同的值列表,您只需使用 DISTINCT 关键字。

SELECT DISTINCT cc.Id...

虽然这是您问题的正确答案,但我怀疑客户名称并非都是具有相同创建日期的“客户客户”。这意味着您可能有一些客户使用相同的电话号码。在这种情况下,您想展示哪个客户?查看此示例数据以更好地了解该问题:

id  firstname  lastname phonenumber creation date 
1   Joel       Foo      664433      2020/01/02
2   John       Bar      664433      2020/01/03
3   Angelo     Foobar   664432      2020/01/04

在这种情况下,我们希望删除重复的电话号码 664433,但我们希望为该号码显示哪个名称:Joel 或 John?

删除查询中的重复项可能会解决您的问题,但以后可能会产生更大的问题。如果要求没有重复电话号码,我建议首先不要允许重复电话号码。

【讨论】:

  • 你好,我不明白这个“fooNumber”的东西,你能解释一下吗?我仍然无法过滤重复的电话号码
  • 您是否要过滤重复的电话号码或重复的客户?表设计似乎与客户的电话号码具有一对一的关系,因此模式应该使用约束来强制执行重复值。我会修改我的回复,但我认为您仍然会遇到问题。
猜你喜欢
  • 2020-10-06
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-05
  • 1970-01-01
  • 2022-01-17
相关资源
最近更新 更多