执行以下mysql查询时出错
问题描述:
select name from movie as d
where d.mov = movie.mov;
。 错误1054(42S22):未知列'd.mov in'子句' 。 我确定列mov存在。执行以下mysql查询时出错
,但是这是真的
select name from movie as d
where d.mov = mov;
答
当您为某个表定义别名时,您总是使用必须使用该别名。
第一个查询不起作用,因为一旦您定义了别名,该表现在是只有可以使用该别名访问。
第二个查询是可行的,因为只要列名是唯一的,就不必使用表/别名前缀。
+0
虽然是奇怪的错误讯息。为什么会抱怨'd.mov'?肯定'movie.mov'是问题。 – 2011-04-20 17:39:46
+1
@马丁:好点。我其实忽略了那个细节。但考虑到第一个查询已经包含一个拼写错误,也许还有更多的错误消息并不属于查询。 – 2011-04-20 17:41:19
答
“电影” 或 “影视”? (简明,准确,但对于答案太短)
答
如果
select name from moive as d
where d.mov = mov;
是真的,比我想你应该写
select name from moive as d
where d.mov = moive.mov;
'moive'?错别字通常不能很好地工作。 – geekosaur 2011-04-20 17:36:19
你想做什么?为什么要给该表一个别名,然后使用相关名称和不相关名称来比较一列与自身? – 2011-04-20 17:36:58
你为什么要为一个表别名并将相同的列值与自己进行比较。该查询是否正常工作将始终返回所有行。 – 2011-04-20 17:37:33