这种情况能不能一条语句查出来:
现在有几个分类:cid 1 2 3
现在我想查 cid 为 1 的最近2000个产品(pid) 和 cid 2 ,3的所有产品一条语句能弄出来吗?

解决方案 »

  1.   

    贴建表及插入记录的SQL,及要求结果出来看看
      

  2.   

    CREATE TABLE IF NOT EXISTS `mail_subscribe` (
      `email_id` int(11) NOT NULL AUTO_INCREMENT,
      `email_name` varchar(96) NOT NULL,
      `email_add_date` datetime NOT NULL,
      `email_source` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1手动导入,2订阅,3注册,',
      `email_status` tinyint(1) NOT NULL DEFAULT '1',
      `send_num` int(11) NOT NULL DEFAULT '0',
      `see_num` int(11) NOT NULL DEFAULT '0',
      PRIMARY KEY (`email_id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COMMENT='邮件订阅' ;
    INSERT INTO `mail_subscribe` (`email_id`, `email_name`, `email_add_date`, `email_source`, `email_status`, `send_num`, `see_num`) VALUES
    (11, '[email protected]', '2012-09-13 02:43:50', 3, 1, 0, 0),
    (14, '[email protected]', '2012-09-13 02:43:50', 3, 1, 0, 0),
    (13, '[email protected]', '2012-09-13 02:43:50', 3, 1, 0, 0),
    (12, '[email protected]', '2012-09-13 02:43:50', 3, 1, 0, 0),
    (10, '[email protected]', '2012-09-13 02:43:50', 3, 1, 0, 0),
    (9, '[email protected]', '2012-09-13 02:43:50', 1, 1, 0, 0),
    (15, '[email protected]', '2012-09-13 02:43:50', 1, 1, 0, 0),
    (16, '[email protected]', '2012-09-13 02:43:50', 1, 1, 0, 0),
    (17, '[email protected]', '2012-09-13 02:43:50', 1, 1, 0, 0),
    (18, '[email protected]', '2012-09-13 02:43:50', 1, 1, 0, 0),
    (19, '[email protected]', '2012-09-13 02:43:50', 1, 1, 0, 0),
    (20, '[email protected]', '2012-09-13 02:43:50', 1, 1, 0, 0),
    (21, '[email protected]', '2012-09-13 02:43:50', 2, 1, 0, 0),
    (22, '[email protected]', '2012-09-13 02:43:50', 2, 1, 0, 0),
    (23, '[email protected]', '2012-09-13 02:43:50', 2, 1, 0, 0)
    数据贴出一部来! 
    email_source = 1 查处最近的2000条 这里没这么多 就比如最近的5条
    email_source = 2 
    email_source = 3
    2,3的都查出来
    能不能一条sql查出来?
      

  3.   

    试试看:
    (SELECT * 
    FROM `mail_subscribe` 
    WHERE email_source=1 
    ORDER BY email_add_date DESC 
    LIMIT 5) 
    UNION ALL 
    (SELECT *  
    FROM `mail_subscribe` 
    WHERE email_source=2 OR email_source=3) 
      

  4.   

    以`email_id`为最近标准?
    SELECT * FROM `mail_subscribe` a WHERE 
    (`email_source` NOT IN(2,3) AND 
    2>(SELECT COUNT(*) FROM `mail_subscribe` 
    WHERE a.`email_source`=`email_source` AND a.`email_id`<`email_id` AND `email_source` NOT IN(2,3)))
    OR
    `email_source` IN(2,3)