问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

PHP MYSQL join后怎么区分两个表的ID

发布网友 发布时间:2022-05-06 07:24

我来回答

2个回答

懂视网 时间:2022-05-06 11:45

发现 sql 的写法真是千奇百怪,经常遇到没见过的写法。前几天就遇到了一个 sql 在 join 后写两个表,用逗号分隔。类似下面。 select a.a, b.f from t1 a left join ( b, c ) on ( b.id = c.id and b.a = a.a ) 看到 sql 的这些用法我一般都是去 pgsql 的文档

发现 sql 的写法真是千奇百怪,经常遇到没见过的写法。前几天就遇到了一个 sql 在 join 后写两个表,用逗号分隔。类似下面。

select a.a, b.f from t1 a left join ( b, c ) on ( b.id = c.id and b.a = a.a )

看到 sql 的这些用法我一般都是去 pgsql 的文档里面去查,因为 pg 的文档里面一般会指明一种用法是否标准 sql,多写标准 sql 可以避免知识不能转移。不过去查了发现 pg 不支持这种写法,也去 pg 里面执行了,确实不支持。

然后就去看 mysql 的文档,里面有对于这种写法的支持。

 The syntax of table_factor is extended in comparison with the SQL Standard. The latter accepts only table_reference, not a list of them inside a pair of parentheses.

This is a conservative extension if we consider each comma in a list of table_reference items as equivalent to an inner join. For example:

SELECT * FROM t1 LEFT JOIN (t2, t3, t4)
   ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)

is equivalent to:

SELECT * FROM t1 LEFT JOIN (t2 CROSS JOIN t3 CROSS JOIN t4)
   ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)

In MySQL, JOIN, CROSS JOIN, and INNER JOIN are syntactic equivalents (they can replace each other). In standard SQL, they are not equivalent. INNER JOIN is used with an ON clause, CROSS JOIN is used otherwise. 

可以看到,这种写法就是等于是让括号里面的 b,c 使用 inner join 的方式连接,当然如果 on 里面没有指定 join 方式,最后就是个笛卡尔集。然后这里 有更多的一些说明,还有下面这种写法。

t1 LEFT JOIN t2 ON t1.a=t2.a, t3

这些写法都有各自的含义。

其实这么看来,这个方式好像是比较方便的,不过是对于不明白的人如果乱用,这玩意出的错也是很诡异很难排查的。

另外注意上面的语句里面写了,mysql 里面的 join, inner join, cross join 是完全同样的东西。

热心网友 时间:2022-05-06 08:53

select table1.id,table2.id as table2id,....
from
table1 left join table2 on table1.id=table2.id

在select 后将重复的字段起个别名就行了.像上面的情况,就会是id和table2id两个字段.

这里加不加as效果一样.如果不是选择相同名称的列,即便存在相同名称的列,也不用管.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2024年欧洲杯赛程表 德国欧洲杯足球赛2024赛程时间表 勇者斗魔王勇者斗恶龙12Gameboy游戏1中最后魔王变身后怎么打2中什么武... 电脑开机十秒技巧怎样让电脑开机速度变快 完美世界手游熊猫哪里抓完美国际熊猫是怎么得的 ...每一关跳旗杆的时候怎么才能跳到满分我每次都只能跳到 ip11和ip11pro区别 请问;谁知道SJ-M里面有一个叫基_什么? 智齿疼一定要拔吗 大师们帮我算算我的命数!不胜感激~ 怎样选择评估公司 重庆到乐山自驾最近路程怎么走? 乐山到云南旅游自驾游最佳路线 乐山到邛崃平乐古镇自驾游怎么走 从四川乐山到云南自驾游线路怎么走合理 从来石家庄去乐山自驾游最佳路线 乐山到九寨沟自驾游 乐山到张家界多少公里 求自驾游乐山和峨眉山攻略,线路,等 从乐山到广州自驾游路线上所经过哪些城市 乐山到稻城自驾游攻略 乐山到西昌两日自驾游如何安排线路? 乐山自驾泸沽湖丽江大理怎样安排线路行程 从桂林到乐山自驾游路线经过哪些城市? 乐山自驾游十天有那些路线,去海边 贪玩蓝月手游开区时间是多少? 好久没来了 现在这游戏新区还有人玩吗? 还有人敢投钱吗? steam权力的游戏 怎么选新区? 新手打算去游戏里赚钱,是去老区还是新区好 豆花怎么点又嫩又绵实 玩游戏新区老区哪个好? 晋江哪里在批发正条豆花 如果要做一个食品淘宝小店,怎么运营 南极中山站绝美极光登热搜,摄像师拍一组这么美的图片有多难? 为什么电脑桌面的图片会分成四格了? 有人有这张图的16:9的版本吗,拿来做电脑壁纸 云首发是不是VIP 锤子Smartisan OS2.0有什么新功能 Smartisan OS2.0新增功能 求助求助,高清原图,做电脑壁纸? 大柴旦离哪个机场近?我要从贵阳到大柴旦··转机或者转火车,求最快捷的路线 从大柴旦 到敦煌机场 要几个小时? 大柴旦镇属于青海那个地区?从兰州坐火车怎么走? 无锡去大柴旦有多远 中国六大机场有哪些? 如何炖好羊棒骨? 清炖羊棒骨 虾煮多少分钟熟 富德生命康健无忧守护版2021好吗?注意哪些问题? select...join能不能连接多个表??? 打字速度太慢,想要提升一下 用郑码输入法的人有多少? 湘潭同城快递电话号码