Mysql 从另一个表中一列的多个值中选择唯一ID
我在一个可能很容易解决的问题上被困了好几个小时,但我太迷茫了 我有三张桌子: 使用者 汽车 用户车Mysql 从另一个表中一列的多个值中选择唯一ID,mysql,Mysql,我在一个可能很容易解决的问题上被困了好几个小时,但我太迷茫了 我有三张桌子: 使用者 汽车 用户车 例如,我想在user\u car表中获取所有拥有id为1和2的车辆的用户,因此我应该只获取id\u user 2,而我找不到正确的方法来执行此操作。尝试此未经测试的查询: select * from user join user_car car1 on id =car1.user_id join user_car car2 on id =car2.user_id where car1.id_ca
例如,我想在user\u car表中获取所有拥有id为1和2的车辆的用户,因此我应该只获取id\u user 2,而我找不到正确的方法来执行此操作。尝试此未经测试的查询:
select * from user join user_car car1 on id =car1.user_id
join user_car car2 on id =car2.user_id where car1.id_car=1 and car2.id_car=2
在这件事上,我会使用UNION:
SELECT id as id_user from user where id in(1, 2)
UNION
SELECT id as id_car from car where id in (1, 2)
也许你想要这个
SELECT *
FROM USER
WHERE id IN
(SELECT id_user
FROM user_car
WHERE id_car=1 OR id_car=2);
您可以使用COUNT执行以下操作:-
SELECT user.name
FROM user
INNER JOIN user_car ON user.id = user_car.id_user
INNER JOIN car ON user_car.id_car = car.id
WHERE car.id IN (1,2)
GROUP BY user.name
HAVING COUNT(DISTINCT car.id) = 2
请注意,这可以简化,以便在您仅使用汽车id时不需要使用汽车表。在x、y组中,z的计数为*=2。我想我通过这样做找到了解决方法:从用户中选择user.id从uc1上的用户加入uc1上的用户加入uc1上的用户加入uc2上的用户加入uc2。id\u car=2由uc1.id\u用户分组;您可以发布您的预期输出吗?要使其工作,您需要在子查询中使用OR而不是AND。
SELECT id as id_user from user where id in(1, 2)
UNION
SELECT id as id_car from car where id in (1, 2)
SELECT *
FROM USER
WHERE id IN
(SELECT id_user
FROM user_car
WHERE id_car=1 OR id_car=2);
SELECT user.name
FROM user
INNER JOIN user_car ON user.id = user_car.id_user
INNER JOIN car ON user_car.id_car = car.id
WHERE car.id IN (1,2)
GROUP BY user.name
HAVING COUNT(DISTINCT car.id) = 2