我无法在子查询中显示多行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;
答案 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
似乎没必要,因为您已加入Posts
和Users
,因此您可以仅使用连接来简化它。
你到底想要选择什么?
答案 1 :(得分:0)
无论何时将表连接到自身,或在子查询中使用它,都必须使用别名。
所以你的内部查询应该是
(
SELECT p.body
FROM Posts p
WHERE p.IDUser = something
)
我发现很难理解你要对这个查询做些什么。我觉得它可以大大简化,但我不确定你追求的是什么数据。