Chinaunix

标题: 求助,mysql 如何查询指定无规则多行 [打印本页]

作者: newstudent2011    时间: 2011-07-19 18:03
标题: 求助,mysql 如何查询指定无规则多行
下面的代码是错误的
SELECT * FROM `mylist` WHERE `id` ='1,2,6,3,6,9,5,88';

数量很多的指定ID,如何一次查出来?


WHERE `id` =1 OR `id` =2 .....这样写也不行
作者: mmh    时间: 2011-07-19 18:57
{:3_183:} 。。。哥们来错地方了吧。
select * from mylist where id in (1,2,6,3,6,9,5,8
作者: newstudent2011    时间: 2011-07-19 20:45
没有来错,是Perl DBI...
use DBI;
.............略
经过测试,下面代码成功了:

SELECT * FROM `mylist` WHERE ((`id` ='1) or (`id`=2).............));

但是,新问题来了,每个`id` ='xxx' 有多行匹配结果,只想让每个id各自单独一行,然后和在一起怎么弄

总之一行sql 搞定,不想循环多次查询,怕耗费链接
作者: newstudent2011    时间: 2011-07-19 20:55
SELECT *
FROM `posts`
WHERE ((`f_id`=1 LIMIT 0 , 1) OR (`f_id`=2  LIMIT 0 , 1) OR (`f_id`=3  LIMIT 0 , 1) OR (`f_id`=4  LIMIT 0 , 1) OR (`f_id`=5  LIMIT 0 , 1) OR (`f_id`=6  LIMIT 0 , 1))

又是错误的语句
报错
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 0 , 1) OR (`f_id`=2 LIMIT 0 , 1) OR (`f_id`=3 LIMIT 0 , 1) OR (`f_id`=4 ' at line 3
作者: newstudent2011    时间: 2011-07-19 22:16
回复 4# newstudent2011

语句:
SELECT *
FROM `posts`
WHERE `f_id`
IN ( 1, 2, 3 )

查询结束,返回n条记录:
f_id =1 的结果有n多
f_id =2 的结果也有n多
f_id =3 的结果也有n多

这不是我想要的

我想要的结果只有三条:

f_id =1 的结果,只取最后第一条
f_id =2 的结果,只取最后第一条
f_id =3 的结果,只取最后第一条

还有个字段id 可以用来排序,
如何写这些 "order by id desc  limit" 才能输出我想要的结果?
作者: bernana    时间: 2011-07-20 09:33
回复 5# newstudent2011


    用group by f_id试试,想要最后一个先用id排下序
作者: newstudent2011    时间: 2011-07-20 11:10
回复  newstudent2011


    用group by f_id试试,想要最后一个先用id排下序
bernana 发表于 2011-07-20 09:33



    SELECT *
FROM `posts`
WHERE `f_id`
IN ( 1, 2, 3 ) GROUP BY f_id ORDER BY id DESC

试过了,出来三条结果

但有个问题ORDER BY id DESC这个语句似乎没起作用,

无论加DESC还是 默认,取出来的三条数据,都不是最后一条,而是最早的一条(取出结果是id号最小,我想要最大的)




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2