Mysql多个语句的条件不同

时间:2015-09-03 15:45:53

标签: mysql

我有一个mysql表:

CREATE TABLE `templates_assignments` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `type` int(11) NOT NULL DEFAULT '2' 
  `assignment_id` int(11) NOT NULL DEFAULT '1',
  `template_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `template_id` (`template_id`),
) ENGINE=InnoDB AUTO_INCREMENT=122 DEFAULT CHARSET=latin1;

/*Data for the table `templates_assignments` */

insert  into `templates_assignments`
(`id`,`type`,`assignment_id`,`template_id`)
values 
  (15,1,1,1),
  (16,1,1,2),
  (19,1,1,6),
  (54,2,30,6),
  (55,1,5,11),
  (56,1,5,15),
  (57,1,5,22);

我想选择符合这两个条件的模板:

  1. type = 2 AND assignment_id = 30
  2. type = 1 AND assignment_id = 1
  3. 唯一应该返回的template_id是6,但我会继续得到全部或没有。

    我的查询条件类似于:

    WHERE 
    (
        (templatesAssignments.type=2 AND templatesAssignments.assignment_id=30) AND (templatesAssignments.type=1 AND templatesAssignments.assignment_id=1)
    )
    

    但没有运气......我错过了什么?

2 个答案:

答案 0 :(得分:2)

select template_id
from templatesAssignments
group by template_id
having sum(type=2 AND assignment_id=30) > 0
   and sum(type=1 AND assignment_id=1) > 0

答案 1 :(得分:2)

SELECT ta1.template_id
FROM templatesAssignments ta1
INNER JOIN templatesAssignments ta2 ON ta1.template_id = ta2.template_id
WHERE (ta1.type=1 AND ta1.assignment_id=1)
AND   (ta2.type=2 AND ta2.assignment_id=30)