选择具有相同ID

时间:2015-11-18 10:52:05

标签: mysql row

我在MySQL表package_in_plan

中有以下数据
+------------+----------+------+
| package_id | plan_id  | opt  |
+------------+----------+------+
|  4         | 9        |    0 |
|  35        | 9        |    0 |
|  8         | 9        |    0 |
|  8         | 4        |    0 |
|  4         | 4        |    0 |
|  4         | 16       |    0 |
|  5         | 15       |    0 |
+------------+----------+------+

我希望能够选择package_id 4和8 并且输出应该是plan_id 4。我不希望它输出plan_id 9,因为plan_id 9有package_id 35,plan_id 4没有,所以我希望它具体说明这些package_id请求与plan_id相同。

这是我到目前为止的SQL,并且从那里开始。

Select * from package_in_plan where package_id in(4,8) group by plan_id having count(*) >1;

当然这个没有用。感谢帮助。

1 个答案:

答案 0 :(得分:0)

这将有效:

Select *
from package_in_plan
where package_id in(4,8)
  AND plan_id NOT IN (SELECT plan_id FROM package_in_plan where package_id not in (4,8))

使用package_id获取所有数据,如8或4,并忽略那些包含plan_id和package_id的数据,而不是8或4。

如果你可以将另一个变量传递给查询,那就像@John Woo所说

Select *
from package_in_plan
where package_id in(4,8)
group by plan_id
having COUNT(distinct package_id) = @num (how many packages you want)