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

时间:2019-03-14 20:10:48

标签: php mysql 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

我对此并不陌生,也许有更好的方法,但是我无法弄清楚atm。 感谢所有的答案!

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:-1)

尝试如下

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

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

答案 2 :(得分:-1)

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

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

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