什么" as"和括号在SQL查询中做什么?

时间:2015-05-26 22:33:13

标签: php database

我正在开发一个功能,我的网站上的用户可以互相发送消息。我查找了如何执行此操作并找到可供下载的代码,现在正在使用它。我理解它的大部分含义,我插入自己的变量并解密它,但我发现了一个我以前从未见过的数据库的SELECT函数。

//We check if the recipient exists

$dn1 = mysql_fetch_array(mysql_query('select count(id) as recip, id as recipid, 
(select count(*) from pm) as npm from Users where username="'.$recip.'"'));

我已经看过SELECT函数,但从未使用过单词as或括号。有人能告诉我这些事情到底在做什么吗?它是将它们设置为变量还是什么?这是导致问题的唯一代码行。

2 个答案:

答案 0 :(得分:1)

基本上该行的作用是

  1. count(id)作为收件人:计算行总数(仅使用其列ID)并将该值分配给别名recipid
  2. ID为收件人:将ID指定给pm
  3. (从pm选择count(*))为npm :它执行一个子查询,返回表npm中的行数并将其分配给{{1}}。
  4. 所有这些都与 WHERE

    子句中指定的条件有关

    选中 ALIASES https://dev.mysql.com/doc/refman/5.1/en/identifiers.html

    这个用于 SUBQUERIES https://dev.mysql.com/doc/refman/5.1/en/subqueries.html

答案 1 :(得分:0)

以下是细分:

select count(id) as recip

选择尚未声明的表的行数并为其指定'recip'的别名

id as recipid

为id列指定了recipid的别名

(select count(*) from pm) as npm

子查询选择pm表的rowcount并为其指定别名npm

from Users where username="'.$recip.'"'

指定要查询的表和条件。 (其中,用户名栏= $ recip的值)