首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >限制值实例数量的MySQL跨列比较

限制值实例数量的MySQL跨列比较
EN

Stack Overflow用户
提问于 2015-09-17 23:27:53
回答 2查看 89关注 0票数 0

我有一个包含10个字段的表,这些字段都可以在一个定义的集合中具有值。我只想从该表中选择10列重复相同值的次数不超过x次的记录。

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
id  col1  col2  col3  col4  col5  col6  col7  col8  col9
--------------------------------------------------------
 1  a     b     c     d     e     f     g     h     i
 2  a     a     a     b     c     d     e     f     g
 3  a     a     a     a     b     c     d     e     f
 4  b     c     d     e     f     g     h     i     j
 5  c     c     c     c     d     c     c     f     g

给定上面的示例表,我希望我的SELECT返回记录1、2和4。第3行和第5行都有四列或更多列具有相同的值。

到目前为止,我唯一的想法是连接所有10列,然后使用迭代的instr调用,但这将是非常静态的,并且对性能不友好。

感谢您的关注。

EN

回答 2

Stack Overflow用户

发布于 2015-09-18 00:21:59

您可以使用union all将所有值放入一列,并对每个id进行聚合。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select id from    
(select id, col1 as col from tablename
union all 
select id, col2 from tablename
union all
...
select id, col9 from tablename) t
group by id
having count(distinct col) > 7 --set this according to your need (10-x)
票数 0
EN

Stack Overflow用户

发布于 2015-09-18 01:50:55

在取消数据透视后,您可以使用两个级别的聚合来完成此操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select id
from (select id, col, count(*) as cnt
      from ((select id, col1 as col from t) union all
            (select id, col2 as col from t) union all
            . . .
           ) t
      group by id, col
     ) t
where cnt < 4
group by id;

在没有子查询的情况下,还有一种既麻烦又晦涩难懂的方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select t.* 
from t
where length(replace(concat(col1, . . ., col9), col1, '') < 6 or
      length(replace(concat(col1, . . ., col9), col2, '') < 6 or
      . . .;

这会将列中的值连接在一起,然后删除每个值。仅当值为一个字符时,上述方法才有效。一个细微的变化适用于任何长度:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select t.* 
from t
where replace(concat(concat_ws(',', col1, . . ., col9), ','),
              concat(col1, ',')) not like '%,%,%,%,%,%,%' or
      . . .
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32641539

复制
相关文章
如何使用python连接MySQL表的列值?
MySQL 是一个开源关系数据库管理系统,广泛用于存储、管理和组织数据。使用 MySQL 表时,通常需要将多个列值组合成一个字符串以进行报告和分析。Python是一种高级编程语言,提供了多个库,可以连接到MySQL数据库和执行SQL查询。
很酷的站长
2023/08/11
2460
如何使用python连接MySQL表的列值?
关于mysql给列加索引这个列值中有null的情况
在需求中由于要批量查数据,且表中数据量挺大(2300万条记录) 且查询条件的这两个字段没有加索引,为了增加查询速度,现在需要去为这两个字段添加索引。 刚开始加索引想到的问题:
袁新栋-jeff.yuan
2020/08/26
4.3K0
WordPress 技巧:限制分类数量
如果你和我一样,使用 WordPress MU 做一个平台,比如我做的花生小店,需要限制每个博客的商品分类的数量:
Denis
2023/04/14
6320
WordPress 技巧:限制分类数量
WordPress 技巧:限制文章数量
如果你和我一样,使用 WordPress MU 做一个平台,比如我做的花生小店,需要限制每个博客的商品数量:
Denis
2023/04/14
6730
WordPress 技巧:限制文章数量
PHP 禁止跨域 - 限制跨域 - 不限制跨域详解
先来了解一下什么是跨域: 1.什么是跨域?跨域:指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。例如:a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源。注意:跨域限制访问,其实是浏览器的限制。理解这一点很重要!!!同源策略:是指协议,域名,端口都要相同,其中有一个不同都会产生跨域;
axiomxs
2021/11/26
2.6K0
MySQL timestamp类型列值自动更新
MySQL中使用timestamp定义字段,默认情况下会给字段添加自动更新的属性,本文将分析这个自动更新的设置。 问题概述 一个表中定义了两个timestamp类型的字段, create_time TIMESTAMP NOT NULL COMMENT '创建时间', update_time TIMESTAMP NOT NULL COMMENT '更新时间' 新插入记录时,给create_time和update_time各自赋予当前时间值,没出现问题。更新记录时代码中只更新update_time,结果cre
JavaQ
2018/04/04
3.8K0
WordPress 技巧:限制素材数量
WordPress 后台限制系列最后一篇,限制图片素材的数量,废话不多说,直接上代码:
Denis
2023/04/14
8940
WordPress 技巧:限制素材数量
go语言限制Goroutine数量
package main import ( _ "ORMTest/routers" "fmt" "runtime" "time" ) func main() { runtime.GOMAXPROCS(runtime.NumCPU()) c := make(chan bool, 100) t := time.Tick(time.Second) go func() { for { select { case <-t: watching() } }
IT工作者
2021/12/24
7360
Mysql与Oracle中修改列的默认值
背景: 业务发展需要,需要复用历史的表,并且通过表里面原来一个未使用的字段来区分不同的业务。 于是想到通过default来修改列的默认值: alter table A modify column biz default 'old' comment '业务标识 old-老业务, new-新业务' 现象: 上线几天之后,业务反馈旧业务的相关数据查询不到了。找后台运维查生产数据库,发现历史数据的biz字段还是null 原因: 自己在本地mysql数据库试了下,好像的确是default没法修改历史数据为null
SecondWorld
2021/09/08
13.2K0
Excel 技术篇-跨页签统计某一区域下符合条件值的数量方法,COUNTIF函数、数量统计公式的用法实例演示
计算全部人数方法: Sheet2 代表在名为它的页签取数, A:A 代表整个的范围是 A 列, * 号为通配符,代表匹配任意长度字符串, -1 表示减去列名,就是 “姓名” 这个列名。
小蓝枣
2020/09/24
1.4K0
Excel 技术篇-跨页签统计某一区域下符合条件值的数量方法,COUNTIF函数、数量统计公式的用法实例演示
mysql使用default给列设置默认值的问题
add column和modify column在default的语义上处理不一样。
翎野君
2023/07/27
9210
mysql使用default给列设置默认值的问题
解除飞young宽带设备数量的限制
首先感谢cj大佬 的开源,吃水不忘挖井人 很多学校都有校园网需要拿账号去登陆或者限制流量或者限制时间才能畅游internet这就很烦,俗话说上有政策下有对策,大家也想了很多的办法来解决这些限制。诸如:绕端口,扫账号,克隆mac利用路由器固件等等! 今天我就要给大家介绍一个针对破解飞young设备限制方法极其简单,这样一个宿舍都可以用了。可以平摊网费剩下一笔巨款。废话不多说我们进入正题。
用户7146828
2021/08/09
6K0
Pandas 查找,丢弃列值唯一的列
数据清洗很重要,本文演示如何使用 Python Pandas 来查找和丢弃 DataFrame 中列值唯一的列,简言之,就是某列的数值除空值外,全都是一样的,比如:全0,全1,或者全部都是一样的字符串如:已支付,已支付,已支付…
萝 卜
2022/05/12
5.7K0
Pandas 查找,丢弃列值唯一的列
如何取消Chrome浏览器跨域请求限制、跨域名携带Cookie限制、跨域名操作iframe限制?
取消跨域限制、跨域名携带Cookie限制、跨域名操作iframe限制之后的Chrome可以更加方便Web前端开发,同时也可以作为一个完美的爬虫框架。
房东的狗丶
2023/02/17
7.6K0
Python 限制线程的最大数量(Sem
import threading import time sem=threading.Semaphore(4) #限制线程的最大数量为4个 def gothread(): with sem: #锁定线程的最大数量 for i in range(8): print(threading.current_thread().name,i) time.sleep(1) for i in range(5): threading.
py3study
2020/01/06
2.4K0
删除列中的 NULL 值
今天接到一个群友的需求,有一张表的数据如图 1,他希望能通过 SQL 查询出图 2 的结果。
白日梦想家
2020/07/20
9.9K0
删除列中的 NULL 值
mysql列的处理
示例:ALTER TABLE tb_financial MODIFY CREATE_TIME DATETIME(3) DEFAULT NULL COMMENT '录入时间';
hankleo
2020/09/16
3.9K0
团队如何限制合适的在制品(WIP)数量
看板之父David Anderson曾说过“看板的本质是一个很朴素的思想:在制品必须被限制。”但对于团队来说,确定一个合适的在制品限制可能是件棘手的事。
敏捷开发
2022/05/05
2K0
团队如何限制合适的在制品(WIP)数量
几种跨平台方案的比较
原生应用程序在使用新功能时带来的困扰是最少的。由于应用程序是使用平台供应商自己(Apple 或 Google)的控件构建,为了让用户体验更加符合给定的平台,因此他们通常遵循这些供应商制定的设计指南。大多数情况下,原生的应用将会比那些跨平台构建的应用性能要好一些,尽管在很多情况下两者的差异可以忽略不计,不过具体还要取决于底层跨平台技术。原生应用的一大优势是:当需要时,他们可以立即采用 Apple 和 Google 在测试版中开发的新技术而不用等待第三方的集成。构建原生应用的主要缺点是缺乏跨平台的代码复用,如果同时开发 iOS 和 Android 应用,那么开发成本可能会很高。
pak
2022/06/06
1.1K0
点击加载更多

相似问题

SQL -转换值,计算跨多列的实例数量

24

MySQL SELECT。限制来自一列的值的数量

50

mysql触发器-限制列中存储的值的数量

20

Mysql根据单个列的唯一值限制返回结果的数量。

13

比较新列中的跨列返回值

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文