mysql - 在 MySQL 的 LEFTJOIN 中限制右表上的列

标签 mysql

我有以下 2 个表。

tb_Posts
--------
PostId, PostName

tb_PostCategories
------------------
PostId, PostCategoryName

我想加入这两个表,但是,我想显示 tb_Posts 中的所有列和条目,但只显示 tb_PostCategories 中的 PostCategoryName 列,即使 tb_PostCategories 中的 tb_Posts.PostId 条目存在与否。

所以,我做了这个查询,但是我得到了一个 SQL 错误

SELECT *
FROM
(SELECT a.PostId, a.PostName from tb_Posts a) y
LEFT JOIN tb_PostCategories z USING (y.PostId)

谢谢

最佳答案

* 获取所有列。
你可以这样做:

SELECT y.*, z.PostCategoryName
  FROM (SELECT a.PostId, a.PostName FROM tb_Posts a) y
       LEFT JOIN tb_PostCategories z 
       ON y.PostId = z.PostId;

然而,这似乎并不真的需要子查询,所以为了简化一点:

SELECT posts.*, cat.PostCategoryName
  FROM tb_Posts posts
       LEFT JOIN tb_PostCategories cat
       ON cat.PostId = posts.PostId;

关于mysql - 在 MySQL 的 LEFTJOIN 中限制右表上的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9775126/

相关文章:

php - 反转 html 页面上 mysql_fetch_array 的显示

php - 使用 php mysql 的报告中的多个搜索表单

mysql - MyBatis - 在一个查询中执行连续的删除和插入语句

php - 如何检查一个值是否存在于两个 WordPress 数据库表之一中

Php 不从 mysql 获取数据

php - 指定没有订单的客户

php - 通过 PHP 在两个不同的数据库连接之间复制一些 MySQL 行

php - 使用查询实现数据

mysql - 在Mysql 5.1中,类似于 "#sql-44a5_1bc"的表名是什么?

java - 使用不是 Id 的 hibernate 和 Mysql 的自动增量,所以我可以用触发器重置它