更好地理解查询中的MySQL大写字母

时间:2013-05-30 19:30:48

标签: mysql

我是PDO&的新手MySQL一般。我正在从即将被弃用的MySQL切换到PDO,我有一些问题需要更好地理解MySQL查询的工作原理。

我目前有这个功能,我不明白大写U的含义。& M.在表格行之前。

M.是否连接到$ morequery =“”; &安培;你来到更新功能吗?

public function Updates( $_iD, $lastid ){
$morequery = " "; // More Button
$data = " ";

if( $lastid )
    $morequery = "AND M.post_iD < '".$lastid."' "; // More Button End
        $query = mysql_query("SELECT M.post_iD, M.uid_fk, M.message, M.created, U._iUsername,M.uploads FROM Posts M, users U  WHERE U._iStatus='1' AND M.uid_fk=U._iD and M.uid_fk='$_iD' $morequery order by M.post_iD desc limit" .$this->perpage) or die(mysql_error());
            while($row = mysql_fetch_array($query))
                $data[] = $row;
    return $data;
}

3 个答案:

答案 0 :(得分:4)

这与PHP或PDO无关,只与MySQL有关。 UM是在FROM子句中创建的表别名:

FROM Posts M, users U

这意味着在整个查询过程中,M是对该Posts表的引用。您可以指定要选择的列表(如果没有别名,Posts.post_ID将起作用。)

当您查询的两个表具有相同的列名时,这是必需的。例如,M.uid_fkU.uid_fk之间可能存在歧义。如果没有歧义,则没有必要,可以简单地为了清楚起见。

通过两次加入同一张桌子可能会产生这种歧义。在这种情况下,至少需要一个别名,因为表格本身变得模棱两可。

答案 1 :(得分:2)

U&amp; M是表别名

如果你看一下声明(FROM Posts M, users U)的from子句,那就是定义它们的地方

M =帖子

U =用户

对于这种情况,您可以将U替换为用户,将M替换为帖子,以获得相同的结果。

对于简单查询,它是一种有用的简写,对于表连接到自身的查询,需要解决任何歧义

答案 2 :(得分:0)

M和U是表名的快捷方式:

FROM Posts M, users U