MYSQL PHP 语法别名连接

标签 mysql join syntax alias

我正在尝试对两个表执行左连接查询,其中两个表中有公共(public)字段名称。我模糊的理解是 MYSQL 不记得某些表的首字母缩写,所以你最好使用别名。但是,以下查询在别名 muuserid 上引发未知列错误。

非常感谢有关如何修复的建议。

$sql= "SELECT c.id as cid, c.*,m.userid as muserid
FROM `contacts` c
LEFT JOIN `mycontacts` m
ON cid = personid
WHERE muserid = '$userid' "; 

最佳答案

这与JOIN无关。在 MySQL 中,SELECT 语句在 WHEREFROM 子句之后进行评估,因此您不能在 中引用别名WHERE 子句。试试这个:

SELECT *
FROM
(
    SELECT c.id as cid, c.*,m.userid as muserid
    FROM `contacts` c
    LEFT JOIN `mycontacts` m ON c.id = m.personid
) t
WHERE muserid = '$userid';

这是 MySQL 查询执行顺序1:

  • FROM clause
  • WHERE clause
  • GROUP BY clause
  • HAVING clause
  • SELECT clause
  • ORDER BY clause.

1: MySQL query execution order

关于MYSQL PHP 语法别名连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13430264/

相关文章:

mysql - 获取mysql中的多行和单行

mysql - 在 Mac OS X 上使用 R 访问 MySQL 数据库

mysql - 带条件计数并连接

javascript - node.js 中的编码风格

c 语法帮助 - 非常基础

ruby - Double-splat 运算符破坏性地修改哈希值——这是 Ruby 错误吗?

mysql - MySQL 是否支持 BITMAP 索引?

php - 将固定长度的文本文件转换为 SQL

MySQL连接多个表并限制从 "ON"开始输出

python - 如何在同一个数据框中加入和应用?