MySQL查询-更优雅的选项?在SELECT中的多个表中引用相同的列名

MySQL查询-更优雅的选项?在SELECT中的多个表中引用相同的列名,mysql,sql,database,join,where,Mysql,Sql,Database,Join,Where,我在MySQL数据库中有几个表,对于这些表,大多数SELECT查询都会为每个表中的相同值引用一个同名列 因此,例如,表(bnsf、列车计划、列车类型和运营成本)将所有都有一个名为“列车id”的字段 根据记录/行,“train_id”列上的值可以是1、2、3、4、5等。但在查询中的大多数时间,所需的结果都是这些值与给定值匹配的记录,例如“2” 这样的查询是有效的: 有没有更简单的方法来编写该查询(特别是WHERE 条款)?基本上是这样的: 我希望避免使用AND、AND和-并且必须为每个表重复相同的

我在MySQL数据库中有几个表,对于这些表,大多数SELECT查询都会为每个表中的相同值引用一个同名列

因此,例如,表(bnsf、列车计划、列车类型和运营成本)将所有都有一个名为“列车id”的字段

根据记录/行,“train_id”列上的值可以是1、2、3、4、5等。但在查询中的大多数时间,所需的结果都是这些值与给定值匹配的记录,例如“2

这样的查询是有效的:

有没有更简单的方法来编写该查询(特别是WHERE 条款)?基本上是这样的:

我希望避免使用AND、AND和-并且必须为每个表重复相同的值。我所拥有的东西很管用,但看起来不太优雅。有什么想法吗


我花了很长时间阅读其他帖子,但我不喜欢工会等方面的建议(似乎不要再短了)

你的加入条件使得除了第一个WHERE子句之外的所有内容都变得多余

INNER JOIN train_plan ON bnsf.train_id = train_plan.train_id)
仅选择与
bnsf.train\u id
匹配的
train\u plan
行,对于 其他的桌子进一步连接起来

所以当你说

WHERE bnsf.train_id = 2
然后加入该列上的其他表,可以保证它们都相等

SELECT * FROM (((bnsf
INNER JOIN train_plan ON bnsf.train_id = train_plan.train_id)
INNER JOIN train_type ON train_plan.train_id = train_type.train_id)
INNER JOIN operation_costs ON train_type.train_id = operation_costs.train_id)
WHERE bnsf.train_id = 2

这是一个完全合理的问题

您的连接条件使除第一个WHERE子句外的所有子句都变得多余

INNER JOIN train_plan ON bnsf.train_id = train_plan.train_id)
仅选择与
bnsf.train\u id
匹配的
train\u plan
行,对于 其他的桌子进一步连接起来

所以当你说

WHERE bnsf.train_id = 2
然后加入该列上的其他表,可以保证它们都相等

SELECT * FROM (((bnsf
INNER JOIN train_plan ON bnsf.train_id = train_plan.train_id)
INNER JOIN train_type ON train_plan.train_id = train_type.train_id)
INNER JOIN operation_costs ON train_type.train_id = operation_costs.train_id)
WHERE bnsf.train_id = 2

这是一个完全合理的问题

2英寸(a.列车id,b.列车id,c.列车id,d.列车id)--另一个想法,尽管略有不同。谢谢@Strawberry2 IN(a.train_id,b.train_id,c.train_id,d.train_id)--另一个想法,尽管略有不同。谢谢@草莓的