Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择具有特定值的唯一标识符_Sql - Fatal编程技术网

Sql 选择具有特定值的唯一标识符

Sql 选择具有特定值的唯一标识符,sql,Sql,我知道标题不是很清楚,所以我很抱歉,但我需要一些帮助 我得到了以下数据表: GROUP_ID CONTACT_ID MAIN_CONTACT_FLAG 11000 28789 0 11000 28049 1 21890 10086

我知道标题不是很清楚,所以我很抱歉,但我需要一些帮助

我得到了以下数据表:

   GROUP_ID             CONTACT_ID           MAIN_CONTACT_FLAG
    11000                 28789                     0
    11000                 28049                     1
    21890                 10086                     0
    21890                 10554                     0
    21489                 14785                     0
    21464                 12457                     1
    21654                 14558                     0
我需要过滤掉任何没有联系人id且主联系人标志设置为1的组id

因此,期望的输出是:

   GROUP_ID             CONTACT_ID           MAIN_CONTACT_FLAG
    21890                 10086                     0
    21890                 10554                     0
    21489                 14785                     0
    21654                 14558                     0
我尝试了以下查询,但没有一个能给出我需要的结果:

SELECT GROUP_ID,MAIN_CONTACT_FLAG FROM Contact_Group_Contacts_T 
WHERE MAIN_CONTACT_FLAG != 0 AND MAIN_CONTACT_FLAG != 1
ORDER BY Group_ID DESC

SELECT DISTINCT GROUP_ID,Main_Group_Contact_BT 
FROM Contact_Group_Contacts_T 
WHERE NOT EXISTS (SELECT * FROM Contact_Group_Contacts_T WHERE MAIN_CONTACT_FLAG IN (0,1))
提前感谢,, 丹

或者如果您只需要组ID

    SELECT GROUP_ID 
    FROM Contact_Group_Contacts_T 
    GROUP BY GROUP_ID
    HAVING SUM(MAIN_CONTACT_FLAG)=0
更新:

您需要将布尔值(位)大小写为要求和的数字

使用总和(当主触点标志=0时,则为0,否则为1结束)

或者如果您只需要组ID

    SELECT GROUP_ID 
    FROM Contact_Group_Contacts_T 
    GROUP BY GROUP_ID
    HAVING SUM(MAIN_CONTACT_FLAG)=0
更新:

您需要将布尔值(位)大小写为要求和的数字

使用SUM(当MAIN\u CONTACT\u FLAG=0时,则为0,否则为1结束)

尝试以下操作:

select * from 
(
    select *,max(MAIN_CONTACT_FLAG) over (partition by GROUP_ID) as final_flag
    from tablename
)
where final_flag=0;
试试这个:

select * from 
(
    select *,max(MAIN_CONTACT_FLAG) over (partition by GROUP_ID) as final_flag
    from tablename
)
where final_flag=0;

试试这个:您可以通过使用子查询获得所需的输出

select * 
from #tmp
where group_id not in (select distinct group_id from #tmp where main_contact_flag = 1)
不存在

select t.* 
from #tmp t
where not exists (select 1 
                  from #tmp t1 where t.group_id = t1.group_id and t1.main_contact_flag = 1)

试试这个:您可以通过使用子查询获得所需的输出

select * 
from #tmp
where group_id not in (select distinct group_id from #tmp where main_contact_flag = 1)
不存在

select t.* 
from #tmp t
where not exists (select 1 
                  from #tmp t1 where t.group_id = t1.group_id and t1.main_contact_flag = 1)
你需要这个

你需要这个

你有很多方法

您的
不存在
变体将适用于大多数RDBMS,添加以下内容:

SELECT DISTINCT GROUP_ID
FROM   Contact_Group_Contacts_T T1
WHERE  NOT EXISTS (
   SELECT * FROM Contact_Group_Contacts_T T2
   WHERE  T2.GROUP_ID = T1.GROUP_ID  -- the missing piece!
   AND    T2.MAIN_CONTACT_FLAG = 1);
PostgreSQL中,假设
MAIN\u CONTACT\u FLAG
boolean NOT NULL
,有一种简单的方法

你有很多方法

您的
不存在
变体将适用于大多数RDBMS,添加以下内容:

SELECT DISTINCT GROUP_ID
FROM   Contact_Group_Contacts_T T1
WHERE  NOT EXISTS (
   SELECT * FROM Contact_Group_Contacts_T T2
   WHERE  T2.GROUP_ID = T1.GROUP_ID  -- the missing piece!
   AND    T2.MAIN_CONTACT_FLAG = 1);
PostgreSQL中,假设
MAIN\u CONTACT\u FLAG
boolean NOT NULL
,有一种简单的方法


您好,谢谢您的回复。如果我执行您的任何一个查询,就会出现此错误:操作数数据类型位对于求和运算符无效。您好,谢谢您的回复。如果我执行您的任一查询,就会出现此错误:操作数数据类型位对于求和运算符无效。
MAIN\u CONTACT\u FLAG
的数据类型是什么?您应该始终包括表定义、RDBMS和版本。
MAIN\u CONTACT\u FLAG
的数据类型是什么?您应该始终包括表定义、RDBMS和版本。您好,我已经尝试了您的查询,但是经过一些测试,它通过了组ID,该组的主联系人标志设置为1,但在输出查询中未显示这些记录。我建议您在我提供的小提琴中复制相同的记录,以便我可以找出它在哪里中断。嗨,我尝试了您的查询,但是经过一些测试,它通过组ID将主联系人标志设置为1,但没有在输出查询中显示这些记录。我建议您在我提供的小提琴中复制相同的记录,以便我可以找出它在哪里中断。