我有三个表:怪异的结果从一个MySQL查询
- 用户(所有用户)
- 朋友(关系表由ID1和ID2列基本上讲述的是谁的朋友与谁)
- 帖子(所有帖子都有写过它们的用户的ID)。
我要选择用户从职位表中写道由朋友表中指定他的朋友写的所有帖子和文章中,我写了这个查询:
SELECT
posts.ID as ID,
CONCAT(users.FirstName, ' ', users.LastName) as Name,
posts.Date as Date,
posts.Text as Text
FROM users, posts, friends
WHERE users.ID = posts.UserID AND
((posts.UserID = friends.ID1 AND friends.ID2 = '10000007') OR
(posts.UserID = friends.ID2 AND friends.ID1 = '10000007')
OR (posts.UserID = '10000007'))
这给了我他的朋友写了很多额外的行的帖子,我不知道它来自哪里。那么有谁能告诉我查询中的问题在哪里?
不要使用嵌套的'SELECT'语句。改用'JOIN'。 – Heavy 2014-11-15 17:03:25
@重要的是为什么呢?我的意思是在SELECT上使用JOIN的优点是什么? – user2073081 2014-11-17 13:47:28