SQL多行子查询问题

时间:2014-06-07 03:33:03

标签: php mysql sql sql-server json

我无法在子查询中显示多行Posts.body列。我想要子查询,我还没有找到解决这个MySQL约束的方法。如果您需要更多信息,请与我们联系。

SELECT profile_picture, body, post_date, filename, username FROM Posts, Users 
WHERE Posts.IDUser = Users.IDUser 
  AND Posts.body LIKE (SELECT Posts.body FROM Posts WHERE Posts.IDUser = (SELECT Users.IDUser FROM Users WHERE Users.username = 'noah'))
ORDER BY `Posts`.`post_date` DESC;

2 个答案:

答案 0 :(得分:2)

目前还不是很清楚问题究竟是什么,但从我所看到的情况来看,您似乎需要使用IN代替LIKE

SELECT profile_picture, body, post_date, filename, username FROM Posts, Users 
WHERE Posts.IDUser = Users.IDUser 
  AND Posts.body IN (SELECT Posts.body FROM Posts WHERE Posts.IDUser = (SELECT Users.IDUser FROM Users WHERE Users.username = 'noah'))
                 ^^ here
ORDER BY `Posts`.`post_date` DESC;

另一方面,内部SELECT似乎没必要,因为您已加入PostsUsers,因此您可以仅使用连接来简化它。

你到底想要选择什么?

答案 1 :(得分:0)

无论何时将表连接到自身,或在子查询中使用它,都必须使用别名。

所以你的内部查询应该是

(
  SELECT p.body 
  FROM Posts p 
  WHERE p.IDUser = something
)

我发现很难理解你要对这个查询做些什么。我觉得它可以大大简化,但我不确定你追求的是什么数据。