我有以下PHP代码,MySQL代码我无法理解:
$result = $conn->query("SELECT v.*, (select count(*) from $table2 where ParentSyncGuid=v.SyncGuid) children FROM $table2 v WHERE v.ParentSyncGuid IS NULL OR v.ParentSyncGuid = ''");
$ table2之前被定义为正确的MySQL表。
然而," v"不是任何变量,表格或任何我能理解的名称 - 有人可以解释上述查询吗?正在查询的表中有一些条目,其中有一些" root"条目,每个其他条目都有一个父级,最终链接回根条目,因此父/ id语法,上面的代码只是为了找到我理解的根元素...但我无法让它工作并且从未见过" v。"语法之前,并且找不到任何文档。
答案 0 :(得分:5)
在SQL中有这个字符串:FROM $table2 v
现在可以使用别名v
您可以使用*
从所有已连接的表格中选择所有可用列
v.*
仅使用表v
示例:强>
给出以下表格:
TableA
列a1
和a2
TableB
列a1
和b2
SELECT * FROM TableA JOIN TableB ON (...)
这将给出包含所有4列的结果集
SELECT TableA.* FROM TableA JOIN TableB ON (...)
这将仅为列a1
和a2
SELECT v.* FROM TableA v JOIN TableB ON (...)
这与上面完全相同,但别名为
答案 1 :(得分:0)
请参阅SQL语句的"From $table2 v"
部分。这为表提供了替代名称v。这称为别名。
如果写得完整,那就是"From $table2 AS v"
AS关键字是可选的,因此通常会被省略。