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
的主键。)嗨,谢谢你的解决方案。最后,我使用了道格·克雷斯的作品,因为它让我更容易理解,但再次感谢你的回答,感谢你花时间帮助我。是的,是的!我也尝试过类似的事情,却一无所获。。。我现在工作得很好,谢谢你抽出时间。是的,很好!我也尝试过类似的事情,却一无所获。。。我现在工作得很好,谢谢你抽出时间。