我想知道 a.*, c.name, ... a.access 等是什么意思。换句话说,当我在点前加一个字母和点的功能时,我到底指的是什么。
这是我发现这种情况的代码示例:
$query = "SELECT a.*, c.name as categoryname,c.id as categoryid, ".
"c.alias as categoryalias, c.params as categoryparams".
" FROM #__k2_items as a".
" LEFT JOIN #__k2_categories c ON c.id = a.catid";
$query .= " WHERE a.published = 1"
." AND a.access <= {$aid}"
." AND a.trash = 0"
." AND c.published = 1"
." AND c.access <= {$aid}"
." AND c.trash = 0"
;
最佳答案
如果您查看 FROM
子句,您会看到:
FROM #__k2_items as a
在 LEFT JOIN
子句中,您会看到:
LEFT JOIN #__k2_categories c ON c.id = a.catid
别名 #__k2_items
表(不管它真正叫什么)到名称 a
和 #__k2_categories
分别为 c
。在这种情况下,实际上只是为了节省输入并提高查询的可读性。
点将列名与表名相关联,以便 MySQL 知道要查找哪些表,以防在查询涉及的多个表中有相同名称的列。也就是说,它解决了列歧义。
关于sql - mysql语法解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4586262/