Mysql 此结果集是否可以使用左连接或右连接?
我有一个包含唯一问题的问题表和一个包含对应于特定用户提交的答案的行的答案表。我想做的是创建一个查询,为每个问题返回一行,并包含登录用户的答案。如果用户尚未回答问题,则该问题的“答案”列应显示为空。无论用户是否回答了问题,查询都必须为每个问题返回一行,并且不应为任何其他用户的回答返回行 这是我的桌子:Mysql 此结果集是否可以使用左连接或右连接?,mysql,left-join,Mysql,Left Join,我有一个包含唯一问题的问题表和一个包含对应于特定用户提交的答案的行的答案表。我想做的是创建一个查询,为每个问题返回一行,并包含登录用户的答案。如果用户尚未回答问题,则该问题的“答案”列应显示为空。无论用户是否回答了问题,查询都必须为每个问题返回一行,并且不应为任何其他用户的回答返回行 这是我的桌子: CREATE TABLE IF NOT EXISTS `questions` ( `id` int(10) unsigned NOT NULL auto_increment, `question`
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
完美的你把问题准确地联系起来了。在您的解决方案中,我使用了WHERE而不是AND。谢谢