我在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;
当然,这个不起作用。感谢您的帮助。
最佳答案
这会起作用:
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的数据,并忽略那些package_id为8或4的plan_id的数据。
如果你可以像 @John Woo 所说的那样将另一个变量传递给查询 make
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)
关于mysql - 选择具有相同 id 的特定行多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33778084/