什么" s。"和" n"在这个mysql语句中是什么意思?

时间:2015-09-29 15:01:46

标签: php mysql

我目前正在开展一个项目,要求我查看别人的代码,我还是对这些东西还不熟悉,还有一些我不太了解的东西所以希望有人可以放弃一些了解代码实际上在做什么或意味着什么?

以下是有问题的陈述:

select s.* from $tableA n, $tableB s where
            n.id='$send' and
            n.status='$status' and
            n.field=s.id";

我理解根据基础知识,这个语句是从tableA和tableB得到的所有字段我只是不确定s.做什么或n在这个语句中做了什么?他们只是作为标识符还是以这种方式完全错了?如果有必要,我很乐意提供更多信息。

1 个答案:

答案 0 :(得分:3)

它们被称为SQL Table Aliases,它们基本上是临时名称,当您使用表名来指定列时,您可以为表提供更好的可读性。

在你的例子中

SELECT s.* FROM $tableA n, $tableB s
WHERE  n.id='$send'
       AND n.status='$status'
       AND n.field=s.id ;

相同
SELECT $tableB.* FROM $tableA, $tableB
WHERE  $tableA.id='$send'
       AND $tableA.status = '$status'
       AND $tableA.field = $tableB.id ;

但显然它更容易阅读。

当您加入更多表时,表别名更有用,并且在进行自联接时绝对是必须的。

语法注释:

在表格别名时,您可能不会使用AS关键字。

SELECT table_name AS alias

相同
SELECT table_name alias

虽然它有时会更长,但却会带来更好的可读性(例如,在大而混乱的查询中,较大的AS更容易被发现:)