作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个数据库设计:
**users_tbl**
id
username
name
**posts_tbl**
id
url
users_id *FK REFERENCE to users table*
**posts_contents_tbl**
id
posts_id *FK REFERENCE to posts table
title
description
date
views
click
isDeleted
我正在使用此查询
SELECT a.name,a.username,c.*
FROM users_tbl a
LEFT JOIN posts_tbl b ON a.id = b.users_id
LEFT JOIN posts_contents_tbl c ON b.id = c.posts_id
ORDER BY c.id ASC
为什么我尝试运行此查询,它给我 NULL 结果,示例输出如下
但是当我尝试删除 ORDER BY c.id ASC
时,它会给出以下输出:
这不是我预期的结果。
我的预期结果是它将按升序显示 posts_contents_tbl,同时不会显示一些空值。我的数据库中的某些用户在 posts_tbl 中没有帖子数据,因此它们也不应该显示。
我该怎么做呢?我们将非常感谢您的帮助并给予奖励!
谢谢!
PS:我的数据库中已经有数千条记录。
最佳答案
在这种情况下,您必须使用 INNER JOIN
而不是 LEFT JOIN
,因为您只希望显示有帖子的用户。之所以有 Null
值,是因为记录基于表 users_tbl
,并且您提到其中一些记录没有帖子。对吗?
试试这个:
SELECT a.name,
a.username,
c.*
FROM users_tbl a
INNER JOIN posts_tbl b
ON a.id = b.users_id
INNER JOIN posts_contents_tbl c
ON b.id = c.posts_id
ORDER BY c.`date` DESC
关于php - MySQL 使用 ORDER BY 连接表会产生意想不到的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11839414/
我是一名优秀的程序员,十分优秀!