试试看: (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)
以`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)
`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查出来?
(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)
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)