Mysql 选择仅由19岁儿童驾驶的汽车

Mysql 选择仅由19岁儿童驾驶的汽车,mysql,Mysql,我只想买那些只由19岁的人驾驶的车 如果我有这些表格: 查询结果将仅为id=1和id=4的车辆 我试过了 select d.IdCar from Persons p, Drive d where d.IdPerson = p.IdPerson and p.Age = 19 但它给出了至少由一名19岁左右的人驾驶的汽车。您可以使用join获得结果。但假设您的数据库必须快速增长,那么我建议您创建视图 可以使用以下命令创建示例视图 CREATE VIEW drive_view as (

我只想买那些只由19岁的人驾驶的车

如果我有这些表格:

查询结果将仅为id=1和id=4的车辆

我试过了

select d.IdCar 
from  Persons p, Drive d 
where d.IdPerson = p.IdPerson and p.Age = 19

但它给出了至少由一名19岁左右的人驾驶的汽车。

您可以使用join获得结果。但假设您的数据库必须快速增长,那么我建议您创建视图

可以使用以下命令创建示例视图

CREATE VIEW drive_view as (
select d.IdCar, c.Brand, d.IdPerson, p.Name, p.Age from drive d
 left join Persons p on d.IdPerson = p.IdPerson
 left join CARS.c on d.IdCar = c.IdCar
 order by p.IdPerson ASC
 );
然后,您只需使用从程序中选择查询即可。e、 g

select * from drive_view where Age = 19;

我希望这有帮助。如果您还处于开始阶段,我建议您了解一些有关联接、视图、触发器等的知识。这将对您有很大帮助。

您可以使用联接来获得结果。但假设您的数据库必须快速增长,那么我建议您创建视图

可以使用以下命令创建示例视图

CREATE VIEW drive_view as (
select d.IdCar, c.Brand, d.IdPerson, p.Name, p.Age from drive d
 left join Persons p on d.IdPerson = p.IdPerson
 left join CARS.c on d.IdCar = c.IdCar
 order by p.IdPerson ASC
 );
然后,您只需使用从程序中选择查询即可。e、 g

select * from drive_view where Age = 19;
我希望这有帮助。如果您还处于初级阶段,我建议您了解一些有关联接、视图、触发器等的知识。这将对您有很大帮助。

尝试以下方法:

SELECT c.IdCar, c.Brand
FROM Car c
INNER JOIN Drive d 
    USING (IdCar)
INNER JOIN Persons p
    USING (IdPerson)
GROUP BY d.IdCar
HAVING MIN(p.Age) = 19
   AND MAX(p.Age) = 19
试试这个:

SELECT c.IdCar, c.Brand
FROM Car c
INNER JOIN Drive d 
    USING (IdCar)
INNER JOIN Persons p
    USING (IdPerson)
GROUP BY d.IdCar
HAVING MIN(p.Age) = 19
   AND MAX(p.Age) = 19

所以我找到了这个解决方案,它对我很有效: 因此,我们首先创建一个随年龄变化的dirvers视图!=十九,

CREATE VIEW drive_view as (
select d.IdPerson from drive d
 left join Persons p on d.IdPerson = p.IdPerson
 left join CARS.c on d.IdCar = c.IdCar
 Where P.age <> 19
 );
所以这基本上是@Yash的相反观点:
Wich提供了所有至少由19岁左右的人驾驶的汽车。

因此我找到了这个解决方案,它对我很有效: 因此,我们首先创建一个随年龄变化的dirvers视图!=十九,

CREATE VIEW drive_view as (
select d.IdPerson from drive d
 left join Persons p on d.IdPerson = p.IdPerson
 left join CARS.c on d.IdCar = c.IdCar
 Where P.age <> 19
 );
所以这基本上是@Yash的相反观点:
Wich给出了所有由至少19岁的人驾驶的汽车。

连接提示是使用来自人的
p在d.IdPerson=p.IdPerson上连接驱动器d
语法,因为
容易忘记标准。欢迎来到SO,好的第一个问题。@danblack哦,谢谢你的提示。@草莓,我想我已经提供了一个例子!!我想我已经提供了一个链接。通用汽车公司只由19岁的阿尔伯蒂普驾驶,而joins是使用d.Iderson=p.Iderson语法上的人p JOIN Drive d的
,因为
容易忘记标准。欢迎来到SO,好的第一个问题。@danblack哦,谢谢你的提示。@草莓,我想我已经提供了一个例子!!我想我已经提供了一个链接。通用汽车只由19岁的阿尔伯塔驾驶,它没有回答年龄=19岁的问题,其他什么都没有<代码>视图
使理解复杂化,如果在同一查询中存在重用,则对重用的表达式使用CTE。触发器是有目的的,但也可能指出用于预期目的的错误数据结构。请注意,针对MySQL中视图的查询无法访问底层索引,这使它们的有用性受到质疑。它不能回答年龄=19的问题,也不能回答其他任何问题<代码>视图使理解复杂化,如果在同一查询中存在重用,则对重用的表达式使用CTE。触发器是有目的的,但也可能指示用于预期目的的错误数据结构。