Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从另一个表中一列的多个值中选择唯一ID_Mysql - Fatal编程技术网

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