gpt4 book ai didi

mysql - 这个结果集可以用左连接还是右连接?

转载 作者:行者123 更新时间:2023-11-29 01:32:19 25 4
gpt4 key购买 nike

我有一个包含独特问题的问题表和一个包含与特定用户提交的答案相对应的行的答案表。我想做的是创建一个查询,为每个问题返回一行,并包括登录用户的答案。如果用户尚未回答问题,则答案列应为该问题显示 NULL。查询必须为每个问题返回一行,无论用户是否回答了它,并且不应返回任何其他用户回答的行。

这是我的表格:

CREATE TABLE IF NOT EXISTS `questions` (
`id` int(10) unsigned NOT NULL auto_increment,
`question` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS `answers` (
`fb_user` int(3) unsigned NOT NULL,
`question_id` int(10) unsigned NOT NULL,
`answer` text NOT NULL,
UNIQUE KEY `fb_user` (`fb_user`,`question_id`)
) ENGINE=InnoDB;

目前我正在使用两个查询来完成这项工作:

CREATE TEMPORARY TABLE answers_f SELECT * from answers WHERE fb_user = '$fb_profile_id'
SELECT questions.*, answers_f.* FROM answers_f RIGHT JOIN questions ON questions.id = answers_f.question_id ORDER BY questions.id

问题?有没有一种方法可以只使用一个左连接查询或右连接查询以及一个子查询或多个连接,而不必像我在上面所做的那样创建一个临时表?

最佳答案

要将其编写为单个查询,您需要将用户名作为连接条件的一部分进行测试,而不是作为 WHERE 子句。

SELECT
questions.id,
questions.question,
answers.answer
FROM questions
LEFT JOIN answers
ON question_id = questions.id
AND fb_user = 'foobar'
ORDER BY questions.id

关于mysql - 这个结果集可以用左连接还是右连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8274331/

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