Mysql 返回另一个表中与另一个表中的链接值匹配的所有值

Mysql 返回另一个表中与另一个表中的链接值匹配的所有值,mysql,sql,database,Mysql,Sql,Database,对不起,标题有点复杂 我在任何地方都做了一些搜索,但我不确定我的措辞是否正确以获得任何结果,或者我想做的事情是否可能 基本上,我希望返回一个表中与另一个表中的值匹配的所有值。 我有以下表格: Table "Cars" Table "Models" Car_ID Car Car_ID Model_ID Model ------------------- ----------------------------

对不起,标题有点复杂

我在任何地方都做了一些搜索,但我不确定我的措辞是否正确以获得任何结果,或者我想做的事情是否可能

基本上,我希望返回一个表中与另一个表中的值匹配的所有值。 我有以下表格:

Table "Cars"               Table "Models"

Car_ID    Car              Car_ID    Model_ID    Model
-------------------        ----------------------------
1         Ford             1          14         Mustang
2         Fiat             1          21         Focus
3         Toyota           1          87         Escort
                           2          78         500
                           2          45         Punto
                           3          66         Aygo
如果我只搜索一个型号名称(如Escort),我希望得到以下结果:

Car    Model_ID    Model
------------------------
Ford   14          Mustang
Ford   21          Focus
Ford   87          Escort
因此,搜索汽车模型将返回相同品牌的所有模型


有人有什么想法吗?

这就是你要找的吗

SELECT c.Car, m.Model_ID, m.Model
FROM Models m
INNER JOIN Cars c ON c.Car_ID = M.Car_ID
WHERE m.Car_ID = (SELECT Car_ID FROM Models WHERE Model = 'Escort');

这就是你要找的吗

SELECT c.Car, m.Model_ID, m.Model
FROM Models m
INNER JOIN Cars c ON c.Car_ID = M.Car_ID
WHERE m.Car_ID = (SELECT Car_ID FROM Models WHERE Model = 'Escort');

您可以使用此查询。如果有多个模型具有相同的名称,此查询将返回所提供模型名称的所有对应品牌的所有模型

SELECT c.Car, m.Model_ID, m.Model

FROM Models AS m_search

INNER JOIN Cars AS c
ON m_search.Car_ID = c.Car_ID

INNER JOIN Models AS m
ON c.Car_ID = m.Car_ID

WHERE m_search.Model = ?
关于PostgreSQL的示例(因为MySQL不支持带有的
):


您可以使用此查询。如果有多个模型具有相同的名称,此查询将返回所提供模型名称的所有对应品牌的所有模型

SELECT c.Car, m.Model_ID, m.Model

FROM Models AS m_search

INNER JOIN Cars AS c
ON m_search.Car_ID = c.Car_ID

INNER JOIN Models AS m
ON c.Car_ID = m.Car_ID

WHERE m_search.Model = ?
关于PostgreSQL的示例(因为MySQL不支持带有
):


您可以使用子查询检索模型的
Car\u ID

select  *
from    Models m
join    Cars c
on      c.Car_ID = m.Car_ID
where   m.Car_ID = 
        (
        select  Car_ID
        from    Models
        where   Model = 'Mustang'
        )

您可以使用子查询检索模型的
Car\u ID

select  *
from    Models m
join    Cars c
on      c.Car_ID = m.Car_ID
where   m.Car_ID = 
        (
        select  Car_ID
        from    Models
        where   Model = 'Mustang'
        )
试试这个:

 select c.Car, m.Model_ID, m.Model from Cars c, Models m where c.Car_ID=m.Car_ID 
and Car_ID in (select Car_ID from Models where  Model='Escort')
试试这个:

 select c.Car, m.Model_ID, m.Model from Cars c, Models m where c.Car_ID=m.Car_ID 
and Car_ID in (select Car_ID from Models where  Model='Escort')

根据所查看的表的大小,在子查询中获取信息可能比使用“in”或联接更有效

select ( select car from cars where car_id = m.car_id ), model_id, model
  from models m
 where car_id = ( select car_id from from models where model = 'Escort' )

根据所查看的表的大小,在子查询中获取信息可能比使用“in”或联接更有效

select ( select car from cars where car_id = m.car_id ), model_id, model
  from models m
 where car_id = ( select car_id from from models where model = 'Escort' )

只要
模型是唯一的,这就行了。否则,你会得到很多重复的rows@Andomar:如果模型具有不同的
Model\u ID
值,则根据定义,行不会重复。如果它们具有相同的
Model\u ID
,那么数据库模式将不正确,因为这应该是
Models
的主键。)嗨,谢谢你的解决方案。最后,我使用了Doug Kress,因为这对我来说更容易理解,但再次感谢你的回答,感谢你花时间帮助我。只要
模型是唯一的,这就行了。模型
是唯一的,否则,你会得到很多重复rows@Andomar:如果模型具有不同的
模型ID
值,根据定义,这些行不会重复。如果它们具有相同的
Model\u ID
,那么数据库模式将不正确,因为这应该是
Models
的主键。)嗨,谢谢你的解决方案。最后,我使用了道格·克雷斯的作品,因为它让我更容易理解,但再次感谢你的回答,感谢你花时间帮助我。是的,是的!我也尝试过类似的事情,却一无所获。。。我现在工作得很好,谢谢你抽出时间。是的,很好!我也尝试过类似的事情,却一无所获。。。我现在工作得很好,谢谢你抽出时间。