gpt4 book ai didi

mysql - 对查询结果进行子查询?

转载 作者:行者123 更新时间:2023-11-29 00:24:12 24 4
gpt4 key购买 nike

我如何将这两者联合起来?

这个查询:

SELECT f1.asked_user_id AS friend_id
FROM friends AS f1 JOIN friends AS f2
ON f1.asked_user_id = f2.asker_user_id
AND f1.asker_user_id = f2.asked_user_id
AND f1.asker_user_id = :user_id
WHERE f1.status = 1 AND f2.status = 1

与:

(SELECT GROUP_CONCAT(words_en.word) FROM connections JOIN words_en ON connections.word_id = words_en.id WHERE connections.user_id = friends.friend_id) As friend_words

再做一次连接:

JOIN users ON friends.friend_id = users.id

我在这里尝试了一些东西:http://www.sqlfiddle.com/#!2/85d6d/36

第一个查询从表中选择两种方式的 friend 。我从那个查询中得到了 friend_id。现在我想知道更多关于这个 friend_id 的信息。所以我想用这个 id 做另一个查询,显示该用户连接表中的所有 word_ids,word_ids 可用于从 words_en 中获取实际单词。最后,我想从用户表中获取用户姓名。

最佳答案

试试这个:

SELECT a.name_surname,GROUP_CONCAT(Distinct w.word Order by w.word asc) AS words
FROM (
SELECT f1.asked_user_id AS friend_id,
f1.created,
u.name_surname,
u.avatar
FROM friends AS f1
INNER JOIN friends AS f2 ON f1.asked_user_id = f2.asker_user_id
INNER JOIN users AS u ON f1.asked_user_id = u.id
AND f1.asker_user_id = f2.asked_user_id
AND f1.asker_user_id = 1
WHERE f1.status = 1 AND f2.status = 1
) a
LEFT JOIN connections c ON c.user_id = a.friend_id
LEFT JOIN words_en w ON c.word_id = w.id
GROUP BY 1;

sqlfiddle demo

有了您的原始查询,我所做的就是将该查询视为一个表 (a) 并将其LEFT JOINconnections 表。然后,LEFT JOIN connections 表与 words_en 表以达到所需的单词。这使得获取所有从您的原始查询返回的用户成为可能,即使没有连接/单词也是如此。

关于mysql - 对查询结果进行子查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19774587/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com