2011-04-20 98 views
-1
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

'moive'?错别字通常不能很好地工作。 – geekosaur 2011-04-20 17:36:19

+0

你想做什么?为什么要给该表一个别名,然后使用相关名称和不相关名称来比较一列与自身? – 2011-04-20 17:36:58

+0

你为什么要为一个表别名并将相同的列值与自己进行比较。该查询是否正常工作将始终返回所有行。 – 2011-04-20 17:37:33

回答

3

当您为某个表定义别名时,您总是使用必须使用该别名。

第一个查询不起作用,因为一旦您定义了别名,该表现在是只有可以使用该别名访问。

第二个查询是可行的,因为只要列名是唯一的,就不必使用表/别名前缀。

+0

虽然是奇怪的错误讯息。为什么会抱怨'd.mov'?肯定'movie.mov'是问题。 – 2011-04-20 17:39:46

+1

@马丁:好点。我其实忽略了那个细节。但考虑到第一个查询已经包含一个拼写错误,也许还有更多的错误消息并不属于查询。 – 2011-04-20 17:41:19

0

“电影” 或 “影视”? (简明,准确,但对于答案太短)

0

如果

select name from moive as d 
where d.mov = mov; 

是真的,比我想你应该写

select name from moive as d 
where d.mov = moive.mov;