我是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;
}
答案 0 :(得分:4)
这与PHP或PDO无关,只与MySQL有关。 U
和M
是在FROM
子句中创建的表别名:
FROM Posts M, users U
这意味着在整个查询过程中,M
是对该Posts
表的引用。您可以指定要选择的列表(如果没有别名,Posts.post_ID
将起作用。)
当您查询的两个表具有相同的列名时,这是必需的。例如,M.uid_fk
和U.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