繁体   English   中英

SQL:如何在SQL中过滤(WHERE)连接(ON)表?

[英]SQL: How do I filter (WHERE) a joined (ON) table in SQL?

我有两个表(用户和帖子),我想写一个用户的所有帖子(以及其他内容)。 我想我应该使用JOIN和WHERE但是我在使用WHERE时遇到错误。

这是我的代码:

SELECT username, post, joinDate, title, info FROM users 
    WHERE userId='18' 
    JOIN posts ON users.userId=posts.userId 
    ORDER BY date DESC

我是新手,也许还有更好的方法,但我无法理解它。 感谢所有答案!

JOIN子句位于WHERE子句之前,位于FROM子句之后。 首先,您将所需的所有表连接在一起,然后使用WHERE进行过滤。 像这样:

SELECT username, post, joinDate, title, info
FROM users 
JOIN posts ON users.userId=posts.userId 
WHERE users.userId='18'
ORDER BY date DESC

尝试如下

    SELECT u.*,p.*
    FROM users u JOIN posts p ON u.userId=p.userId
    WHERE u.userId=18      
    ORDER BY date DESC

where join之后将是where ,18是int数据类型值,因此不需要单引号,并使用别名来避免ambigous列名

SELECT username, post, joinDate, title, info
FROM users 
JOIN posts ON users.userId=posts.userId and users.userId='18'
ORDER BY date DESC

如果userIdusers表中,则YES可以使用where userId='18'

如果userIdposts表中,则userId='18'应该在join部分中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM