我有两个表,一个事务表和一个事务属性表,如下所示。
交易表
CREATE TABLE `mydb`.`event` (
`id` INT NOT NULL AUTO_INCREMENT,
`user` VARCHAR(45) NOT NULL,
`type` INT NOT NULL,
PRIMARY KEY (`id`));
属性表
CREATE TABLE `mydb`.`event_property` (
`event_id` INT NOT NULL,
`property_type` VARCHAR(45) NOT NULL,
`value` VARCHAR(45) NOT NULL,
PRIMARY KEY (`event_id`, `property_type`, `value`),
CONSTRAINT `event_id`
FOREIGN KEY (`event_id`)
REFERENCES `mydb`.`event` (`id`)
ON DELETE RESTRICT
ON UPDATE RESTRICT);
单个事件可能具有多个属性。我想选择一个具有两个具有特定值的属性的事件。怎么做?
答案 0 :(得分:1)
您可以使用group by
和having
:
select event_id
from event_property
where property_type in ('1', '2')
group by event_id
having count(distinct property_type) = 2;