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)
我在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)