求mysql中满足如下需求的一句sql

问题描述

假设有一个表picture(id,address_id,name),其中一个address_id可关联多个picture.问题:假设有一批address_id,如何写一句sql根据这一批address_id在picture表中取出与之关联的记录,保证每一个address_id只能取出与之关联的2条记录.我想到的关键字是in 和limit,但是如何写出满足此需求的sql,还请各位赐教。问题补充:select * from picture where address_id in( select address_id from picture where address_id in(一批address_id) group by address_id having count(*)=2 ) 这个是有问题的,只能得到两条记录问题补充:"不是只取每个address_id关联的两条记录吗?这样从picture表取出来的每个address_id都有两条记录了呀!能不能再说明一下"主要是这个子句有问题:select address_id from picture where address_id in(一批address_id) group by address_id having count(*)=2 , 这里表示只能取出address_id个数等于两个的记录。 需求是不管有多少条记录,取出前两条。问题补充:to 81261686 (中级程序员):不好意思,可能我前面需求表达得不清楚

解决方案

看来也是没办法滴,不行的话就一个个address_id来查了,只要在同一个链接里对数据库也不会太损.非要做的话,可以考虑用mysql的存储过程.
解决方案二:
这个是有问题的,只能得到两条记录 不是只取每个address_id关联的两条记录吗?这样从picture表取出来的每个address_id都有两条记录了呀!能不能再说明一下
解决方案三:
limit在mysql中不能用在in中,可以考虑用游标,
解决方案四:
select * from picture where address_id in(select address_id from picturewhere address_id in(一批address_id)group by address_id having count(*)=2)这里用having包证取出来的address_id在picture表里只有两条记录,在用一个in去取picture表里只有两条address_id的记录

时间: 2024-10-11 04:22:58

求mysql中满足如下需求的一句sql的相关文章

找出mysql中like模糊查询效率低的sql语句

相比update和insert,一般查询应该是数据库中操作最频繁的.而在有些应用场景需要用到like模糊查询,那么对于大数据,查询的时候就要注意了.   现在来分析一下为什么like语句查询的效率会很低,测试数据共4000000条,如下图:     第一步:不使用索引 下图可以看出,不使用索引的时候普通查询与like查询的耗时相当,like略长,这也是必然的,因为它要进行额外的算法.     第二步:使用索引   如下图,使用索引后,普通查询的耗时基本算是秒查,非常快:而like查询还是耗时一秒

MySQL中批量删除指定前缀表的sql语句_Mysql

复制代码 代码如下: Select CONCAT( 'drop table ', table_name, ';' ) FROM information_schema.tables Where table_name LIKE 'dede_%'; "dede"为要删除的表前缀,执行此SQL语句后会生成一串SQL语句,必须再执行生成的这些SQL语句才能真正执行删除操作 另外一个就是批量修改表名: 复制代码 代码如下: Select CONCAT( 'ALTER TABLE ', table_

mysql中查询今天,昨天,上个月sql语句

今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天Select * FROM 表名 Where TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1 7天Select * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名) 近30天Select * FROM 表名 where DATE_SUB(CURDATE(), I

mysql实战--MYSQL中的SQL分组方法

     在mysql中没有提供分组统计函数,但mysql中变量使用非常灵活,在sql中可以灵活使用变量,这给mysql实现分组的方式带来很大方便,因此在  mysql实现一个分组统计的功能也并不难以实现,且理解起来还比较容易,比如我们提供一下的数据,用来描述,查询出的关键词的词频数,然后根据关键词的  类型,分组统计组内词频出现次数最后的前三挑数据  CREATE TABLE `policy_keywords_rel` (    `id` int(11) NOT NULL AUTO_INCRE

100分在线急求 程序中执行.sql脚本 mysql的

问题描述 我想要在程序中执行mysql的脚本文件比如说点击一个button执行aaa.sql,请各位大虾给与帮助,给100分! 解决方案 解决方案二:自己来顶解决方案三:顶不要沉啊解决方案四:顶不要沉啊解决方案五:如果有存储过程,直接点击button时执行相关存储.如果没有存储过程,单独放进一个文本文件吧,要执行的时候读文件传sql过去!不过怎么感觉这是在多此一举啊.后缀为sql的文件就算是查询分析器打开也不是会自动执行的.你还是得调用执行的命令对象.和一般写法没多大区别的啊.解决方案六:顶不要

利用MySql中的记录变化触发程序的方法?

问题描述 需求是这样的:mysql中的数据变化触发基于C#编写的程序.目前使用的方法是:在C#中开辟一条新线程,循环观测mysql的数据,但是这种方法十分消耗资源,严重影响了主线程的运行效率.是否有什么别的方法解决这一问题?我有三个思路,一是将mysql绑定到WPF界面上的控件,例如textbox,然后观测textbox的textchanged事件,问题是,控件与数据库绑定后,不会随着数据库的数据变化而变化.大神们能给出解决方案么?例如别的控件?还是修改绑定方法?二是通过别的编程语言?利用C++

python-关于mysql中的位图索引和位片索引问题

问题描述 关于mysql中的位图索引和位片索引问题 老师给了一个作业要求利用其他语言例如Python或者C++来实现位图索引,但是一直教的就是mysql,没要办法建位图索引啊.不知道怎么办才好了,求大神指导... 解决方案 Mysql 索引 解决方案二: http://www.cnblogs.com/yuerdongni/p/4255395.html

如何将Access和Excel导入到Mysql中之一

access|excel|mysql 对于一些小型甚至中型的公司来说,仍然使用Access或者Excel记录数据,不仅速度慢,而且在多人操作时存在着很多的不便,随着业务的发展,它们都有着升级系统的要求,但它们又拿不出很多的资金去开发一个系统,这时采用Mysql数据库,然后配合PHP等脚本语言进行开发就有着很多的好处,不仅经济.速度快.便于维护,而且通过浏览器就可以多人同时操作数据库,可以极大地提高工作效率.但这里首先会碰到一个问题,如何将Access和Excel中的数据导入到Mysql中呢,这

MySQL中字符串函数详解

字符串或串(String)是由零个或多个字符组成的有限序列.一般记为 s='a1a2•••an'(n>=0).它是编程语言中表示文本的数据类型. 通常以串的整体作为操作对象,如:在串中查找某个子串.求取一个子串.在串的某个位置上插入一个子串以及删除一个子串等.两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等.设p.q是两个串,求q在p中首次出现的位置的运算叫做模式匹配.串的两种最基本的存储方式是顺序存储方式和链接存储方式. 下面我们来看看MySQL中的字符串函数 假如结果的长