mysql unknown,MySQL Unknown列on子句

第一个查询正在运行:

SELECT video.seller from video;

第二个不是:

SELECT SQL_CALC_FOUND_ROWS *,

t.name as tname

FROM video, type as t

INNER JOIN user

ON video.seller = user.id

WHERE video.type2 = t.id

AND thumbnail_blobKey != ''

AND disabled = 0

AND is_reel = 0

AND price!= 0

AND video.type != 4

GROUP BY video.id

ORDER BY video.id DESC LIMIT 0, 10

Error : Unknown column ‘video.seller’ in ‘on clause’

解决方法:

这是一个有趣的例子.格式更好:

SELECT SQL_CALC_FOUND_ROWS *, t.name as tname

FROM video, type as t INNER JOIN

user

ON video.seller = user.id

WHERE video.type2 = t.id AND

thumbnail_blobKey != '' AND disabled = 0 AND is_reel = 0 AND price!= 0 AND video.type != 4

GROUP BY video.id

ORDER BY video.id DESC

LIMIT 0, 10

问题是视频列在from子句的其余部分中没有被理解,因为,.这就是逗号的工作原理.有趣的是,只需将其替换为逻辑等效的交叉连接即可修复:

SELECT SQL_CALC_FOUND_ROWS *, t.name as tname

FROM video cross join type as t INNER JOIN

user

ON video.seller = user.id

WHERE video.type2 = t.id AND

thumbnail_blobKey != '' AND disabled = 0 AND is_reel = 0 AND price!= 0 AND video.type != 4

GROUP BY video.id

ORDER BY video.id DESC

LIMIT 0, 10

这在documentation中解释,原因是优先的.逗号的优先级低于交叉连接.因此,表达式中的连接被评估为“视频连接(类型连接用户)”.由于首先解释第二个连接,因此视频中的列不可知.

但是,表上确实有一个连接,因此最好写成:

SELECT SQL_CALC_FOUND_ROWS *, t.name as tname

FROM video join

type t

on video.type2 = t.id INNER JOIN

user

ON video.seller = user.id

WHERE thumbnail_blobKey != '' AND disabled = 0 AND is_reel = 0 AND price!= 0 AND video.type != 4

GROUP BY video.id

ORDER BY video.id DESC

LIMIT 0, 10

标签:mysql,sql

来源: https://codeday.me/bug/20190625/1283760.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值