如何在mysql结果集上应用过滤器

如何在mysql结果集上应用过滤器,mysql,filter,where-clause,resultset,Mysql,Filter,Where Clause,Resultset,我想在我的结果集上应用不同的过滤器,这样我就可以检索过滤器的excat结果,并且不需要每次这个过滤器都有一些值,它也可能包含null值,所以我希望使用这样的过滤器 下面是我的桌子 CREATE TABLE `data` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(45) DEFAULT NULL, `url` varchar(45) DEFAULT NULL, `categoryid` int(11) DEFAU

我想在我的结果集上应用不同的过滤器,这样我就可以检索过滤器的excat结果,并且不需要每次这个过滤器都有一些值,它也可能包含null值,所以我希望使用这样的过滤器 下面是我的桌子

CREATE TABLE `data` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(45) DEFAULT NULL,
  `url` varchar(45) DEFAULT NULL,
  `categoryid` int(11) DEFAULT NULL,
  `labelid` int(11) DEFAULT NULL,
  `datetime` datetime DEFAULT NULL,
  `ispublic` int(11) DEFAULT NULL,
  `value` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=latin1;

INSERTed VALUES
INSERT INTO `my_schema`.`data`
(
`title`,
`url`,
`categoryid`,
`labelid`,
`datetime`,
`ispublic`,
`value`)
VALUES
('newclip','http://newclip/',1,1,'2014-11-21 10:40:49',1,3.5),
('newclip url','http://newclip/fisrt/',1,3,'2014-12-21 10:40:49',0,3),
('newclip123','http://newclip123/',2,1,'2014-11-20 10:40:50',1,3.5),
('clip','http://clip/',4,2,'2014-10-21 1:40:49',0,3.5),
('new','http://new/',5,3,'2014-11-25 10:50:49',0,2),
('music','http://newclip/mucis',1,2,'2014-12-21 10:40:49',1,3.5),
('newclip','http://newclip/',4,6,'2014-11-28 10:40:49',0,5),
('newclip','http://newclip/',6,7,'2014-11-21 10:40:49',1,3.5),
('newclip url','http://newclip/fisrt/',1,2,'2014-12-21 10:40:49',0,3),
('newclip123','http://newclip123/',2,1,'2014-11-20 10:40:50',1,3.5),
('clip','http://clip/',1,2,'2014-10-21 1:40:49',0,3.5),
('new','http://new/',1,2,'2014-11-25 10:50:49',0,2),
('music','http://newclip/movie',1,2,'2014-12-21 10:40:49',1,3.5),
('newclip','http://newclip/',1,2,'2014-11-28 10:40:49',0,5)
搜索特定记录的查询仅应用于标题和url,我想检索标题或url中有“newclip”的所有记录

从my_schema.data中选择*,其中标题为“%newclip%”或url为“%newclip%”

使用上面的查询,我得到了所有在url或标题中有新剪辑的记录

现在我想在这个结果集上应用过滤器,过滤器可以使用categoryid、labelid、datetime、ispublic、values等应用于它

如何筛选这样的结果集, 任何帮助都将不胜感激,谢谢您

在外部查询中包含这些过滤器,这些过滤器将应用于内部查询获得的结果集。差不多

Select * from 
    (SELECT * FROM my_schema.data WHERE title 
     LIKE '%newclip%' OR url LIKE '%newclip%') `temp_tbl` 
WHERE condition here...
select * from
(
SELECT * FROM my_schema.data 
WHERE title LIKE '%newclip%' 
OR url LIKE '%newclip%'
) tab 
where categoryid = 3
or labelid = 4;

但是如果用户不提供categoryid,如果用户不选择categoryid,它可能是空的,在这种情况下应该做什么这么酷,我还没有想过,太好了,我会试试这个,isnull函数的输入值是多少错误代码:1582。对本机函数“ISNULL”的调用中的参数计数不正确,该函数应该是最终用户传递的值和输入值。@pitu,啊!!我的错;这是MySQL的。在这种情况下,使用
COALESCE
函数,如
where categoryid=COALESCE(输入,3)