Mysql 如果列不同,我真的需要在联接中包含表名或AS吗?
我注意到前几天我可以很容易地加入mysqlMysql 如果列不同,我真的需要在联接中包含表名或AS吗?,mysql,join,syntax,Mysql,Join,Syntax,我注意到前几天我可以很容易地加入mysql SELECT peeps, persons, friends FROM tablea JOIN tableb USING (id) WHERE id = ? 而不是使用, SELECT a.peeps, a.persons, b.friends FROM tablea a JOIN tableb b USING (id) WHERE id = ? 只有当没有匹配的列名时,它才起作用,为什么我要做第二个而不是第一个 如果没有重复的列名,则不必这样
SELECT peeps, persons, friends FROM tablea JOIN tableb USING (id) WHERE id = ?
而不是使用,
SELECT a.peeps, a.persons, b.friends FROM tablea a JOIN tableb b USING (id) WHERE id = ?
只有当没有匹配的列名时,它才起作用,为什么我要做第二个而不是第一个 如果没有重复的列名,则不必这样做。如果这样做,查询将失败 如果没有重复的列名,则不必这样做。如果这样做,查询将失败 查询1将起作用(只要没有模棱两可的列名) 问题2将
- 更清楚
- 更易于维护(想想那些不熟悉数据库模式的人)
- 将不明确的列名添加到其中一个表后仍然有效
- 更清楚
- 更易于维护(想想那些不熟悉数据库模式的人)
- 将不明确的列名添加到其中一个表后仍然有效
想想那些可怜的家伙(或女孩)的感受,他们不得不站在你身后,试图弄清楚你想要完成什么,以及每一列在哪个表中。明确说明列的来源可以让您在不深入了解模式的情况下查看查询并收集信息。谢谢,我从没想过!这里还有一点——查询通常是从上面的简单查询扩展而来的。养成总是使用前缀的习惯可以使您在需要扩展查询时的工作变得更轻松。类似地,当一个tableB被修改并且现在包含一个与tableA同名的列时,您不必返回到此查询/过程/视图并添加别名。谢谢,我从来没有想过!这里还有一点——查询通常是从上面的简单查询扩展而来的。养成总是使用前缀的习惯可以使您在需要扩展查询时的工作变得更轻松。类似地,当一个tableB被修改并且现在包含一个与tableA同名的列时,您不必返回到这个查询/过程/视图并添加别名。@cgwebprojects:我们都是,但这种特殊的懒惰通常会在某个时候回来咬您。@cgwebprojects:我们都是,但是这种特殊的懒惰通常会在某个时候回来咬你。