Mysql 不同条件下的多条语句
我有一个mysql表:Mysql 不同条件下的多条语句,mysql,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 `
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);
我想选择符合这两个条件的模板:
类型=2,分配id=30
类型=1,分配\u id=1
唯一应该返回的模板id是6,但我总是得到全部或一个都没有
我的查询条件类似于:
WHERE
(
(templatesAssignments.type=2 AND templatesAssignments.assignment_id=30) AND (templatesAssignments.type=1 AND templatesAssignments.assignment_id=1)
)
但是没有运气…我缺少什么?TemplatesSignements.type=2和TemplatesSignements.assignment\u id=30或TemplatesSignements.type=1和TemplatesSignements.assignment\u id=1,但前提是它们不是独占的。没有运气,我找回了所有的Templates您必须使用别名将表连接到自身。@HannoBinder不确定它是什么意思是…我不是太mysql saavy:我没有尝试,只是因为我需要根据我的框架调整答案。反正是thx
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
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)