Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.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
使用MySQL,返回特定的用户ID';s位于具有重复ID的表中';s使用第二列作为标准_Mysql - Fatal编程技术网

使用MySQL,返回特定的用户ID';s位于具有重复ID的表中';s使用第二列作为标准

使用MySQL,返回特定的用户ID';s位于具有重复ID的表中';s使用第二列作为标准,mysql,Mysql,以下是场景: 我有一张像这样的桌子: 表名称:用户活动 USER_ID | ACTIVITY_CODE ----------------------- 1111 | 013 ----------------------- 1111 | 112 ----------------------- 2222 | 014 ----------------------- 3333 | 028 ----------------------- 3333 | 245 ---

以下是场景:

我有一张像这样的桌子:

表名称:用户活动

USER_ID | ACTIVITY_CODE
-----------------------
1111    |  013
-----------------------
1111    |  112
-----------------------
2222    |  014
-----------------------
3333    |  028
-----------------------
3333    |  245
-----------------------
3333    |  468
-----------------------
4444    |  079
-----------------------
4444    |  028
-----------------------
5555    |  157
-----------------------
5555    |  523
-----------------------
6666    |  081
-----------------------
7777    |  067
-----------------------
7777    |  624
-----------------------
这是一个使用MySQL的Oracle数据库,ACTIVITY_代码是一个CHAR字段。我需要提取活动代码以0开头,而没有活动代码以任何其他数字开头的用户ID

所以

提供所有活动代码以0开头的用户标识,但也包括活动代码以0开头的用户标识和其他活动代码以其他数字开头的用户标识

如何仅返回仅具有以0开头的活动\ U代码的用户

我需要它是一个单一的查询(子查询很好),我不能创建视图


可以这样做吗?

使用左连接过滤不符合条件的用户

SELECT user_id
FROM user_activities ua1
LEFT JOIN (SELECT DISTINCT user_id
           FROM user_activities
           WHERE activity_code NOT LIKE '0%') ua2
ON ua1.user_id = ua2.user_id
WHERE ua1.activity_code LIKE '0%'
AND ua2.user_id IS NULL

您也可以通过“notin”和使用正则表达式来实现这一点

select distinct user_id from user_activities
  where activity_code like '0%'
    and user_id not in (select user_id 
                          from user_activities 
                          where activity_code REGEXP '^[1..9]')

戴上我的帽子,您也可以简单地对activity_代码进行min/max ASCII排序,因为您已经用0填充了它

因此,这将是最简单的查询

select user_id from user_activities
  group by user_id
  having min(activity_code) like '0%'
    and max(activity_code) like '0%';

优秀的解决方案。我特别喜欢最小/最大解决方案。谢谢你的帮助。这两种解决方案都非常有效。这个解决方案对我来说也很有效,并且反映了其他人在Access中提出的解决方案,所以这可能是他们最容易立即掌握的解决方案。谢谢你的帮助。
select user_id from user_activities
  group by user_id
  having min(activity_code) like '0%'
    and max(activity_code) like '0%';