mysql - 多对多 select 语句不正确

标签 mysql sql

我注意到我的 sql 查询中有一个错误,但我不确定我做错了什么:

SELECT blog_posts.postid, 
       blog_posts.posttitle, 
       blog_posts.postdesc, 
       blog_posts.postdate 
FROM   blog_posts 
       INNER JOIN members_posts 
               ON members_posts.memberid = blog_posts.postid 
WHERE  members_posts.memberid = '1' 

在上面我尝试只选择属于memberID='1'的帖子。但什么也没有显示?

最佳答案

这是您的查询:

SELECT bp.postID, bp.postTitle, bp.postDesc, bp.postDate
FROM blog_posts bp INNER JOIN
     members_posts mp
     ON mp.memberID = bp.postID
-----------^ ------------^ That seems unlikely
WHERE mp.memberID = '1';

使用正确的列:

SELECT bp.postID, bp.postTitle, bp.postDesc, bp.postDate
FROM blog_posts bp INNER JOIN
     members_posts mp
     ON mp.postId = bp.postID
WHERE mp.memberID = 1;

此外:

  • 表别名使查询更易于编写和阅读。
  • 不要在数字常量两边加上单引号。

关于mysql - 多对多 select 语句不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34048227/

相关文章:

sql - Slick 中的子查询、具有和分组依据

mysql - 如何在用于连接到 mysql 数据库的 Perl 脚本中加密或隐藏密码

php - 如何将 Prefinery 的用户名/密码整合到我的网站?

mysql - 查找模仿 CakePhp 中的 LeftJoin

c# - 从 CSV 进行 SQL 条件选择

java - Hibernate多对多双向存储

mysql - order_products 表应该非规范化吗?

sql - oracle 使用 REGEXP_SUBSTR(AGGREGATOR ,'[^;]+' ,1,LEVEL) 查询速度很慢

mysql - 如何确定 MySQL 中现有表的列分隔符

mysql - 选择具有完全相同的多对多关联的记录