Select 具有相同 ID 的特定行多个值

Select specific row multiple values with same id

我在MySQLtablepackage_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 |
+------------+----------+------+

我希望能够 Select package_id 4 和 8 并且输出应该是 plan_id 4 ONLY。我不希望它输出 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;

当然这个是行不通的。感谢您的帮助。

这会起作用:

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)