Mysql 左联接查询不';t返回预期结果
我的加入查询有问题,或者我需要一个组Mysql 左联接查询不';t返回预期结果,mysql,sql,Mysql,Sql,我的加入查询有问题,或者我需要一个组 table questions ------------------------------------------- | id | questions_id1| category | ------------------------------------------- | 1 | p1 | 1 | | 2 | p2 | 2,1
table questions
-------------------------------------------
| id | questions_id1| category |
-------------------------------------------
| 1 | p1 | 1 |
| 2 | p2 | 2,1 |
| 3 | p3 | 1 |
| 4 | p4 | 2,1 |
| 5 | p5 | 2,1 |
------------------------------------------
预期结果:对于用户_id=1
----------------------------------------------------------------------------------------
| id | question_id1 | question_id2 | user_id | category | extra_category |
----------------------------------------------------------------------------------------
| 4 | p4 | p4 | u2 | 1 | 1 |
| 5 | p5 | p5 | null | 1 | 1 |
| 1 | p1 | p1 | u1 | 1 | 1 |
| 2 | p2 | p2 | u1 | 1 | 1 |
| 3 | p3 | p3 | u1 | 1 | 1 |
---------------------------------------------------------------------------------------
预期结果:对于用户_id=2
------------------------------------------------------------------------------------
| id |question_id1| question_id2| user_id | category | extra_category |
-------------------------------------------------------------------|----------------|
| 3 | p3 | p3 | u1 | 1 | 1 |
| 5 | p5 | p5 | null | 1 | 1 |
| 1 | p1 | p1 | u2 | 1 | 1 |
| 2 | p2 | p2 | u2 | 1 | 1 |
| 4 | p4 | p4 | u2 | 1 | 1 |
-------------------------------------------------------------------------------------
用户_1=1的现在结果
-----------------------------------------------------------------------------------
| id |question_id1| question_id2| user_id | category | extra_category |
-----------------------------------------------------------------------------------
| 1 | p1 | p1 | u2 | 1 | 1 |
| 2 | p2 | p2 | u2 | 1 | 1 |
| 4 | p4 | p4 | u2 | 1 | 1 |
| 5 | p5 | p5 | null | 1 | 1 |
| 1 | p1 | p1 | u1 | 1 | 1 |
| 2 | p2 | p2 | u1 | 1 | 1 |
| 3 | p3 | p3 | u1 | 1 | 1 |
------------------------------------------------------------------------------------
这个测验有100个问题。每个用户都会收到相同的问题。答案保存在表b中。在下一次:他试图解决一个测试,他已经回答正确的答案显示在最后。还有100个问题
SELECT questions.*, answers.*, extra_category.* FROM extra_category
LEFT JOIN questions ON extra_category.questions_id3 = questions.questions_id1
LEFT JOIN answers ON extra_category.questions_id3 = answers.questions_id2 and answers.user_id = 1
WHERE extra_category = 1 AND category LIKE '%1%'
order by case when user_id = '1' then 1 else 0 end, a.id ASC
工作正常什么是
WHERE=?或者组=?
应该是什么意思?这是无效语法。您的查询无法生成预期结果。请附上您的完整查询,不带?。b_2是什么?另外,什么是b_=1?请用有效参数替换占位符参数。如果为表/列提供实名而不是a、b、c,那么解析也会容易得多。如果c-to-a和c-to-b都是一对多关系,则任何连接都会产生具有每个c的笛卡尔乘积(a X b)的结果;左连接不会神奇地消除这种情况。当b_two='1'
任何表中都没有b_two
列时。你的意思是说c_两个?
------------------------------------------------------------------------------------
| id |question_id1| question_id2| user_id | category | extra_category |
-------------------------------------------------------------------|----------------|
| 3 | p3 | p3 | u1 | 1 | 1 |
| 5 | p5 | p5 | null | 1 | 1 |
| 1 | p1 | p1 | u2 | 1 | 1 |
| 2 | p2 | p2 | u2 | 1 | 1 |
| 4 | p4 | p4 | u2 | 1 | 1 |
-------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
| id |question_id1| question_id2| user_id | category | extra_category |
-----------------------------------------------------------------------------------
| 1 | p1 | p1 | u2 | 1 | 1 |
| 2 | p2 | p2 | u2 | 1 | 1 |
| 4 | p4 | p4 | u2 | 1 | 1 |
| 5 | p5 | p5 | null | 1 | 1 |
| 1 | p1 | p1 | u1 | 1 | 1 |
| 2 | p2 | p2 | u1 | 1 | 1 |
| 3 | p3 | p3 | u1 | 1 | 1 |
------------------------------------------------------------------------------------
SELECT questions.*, answers.*, extra_category.* FROM extra_category
LEFT JOIN questions ON extra_category.questions_id3 = questions.questions_id1
LEFT JOIN answers ON extra_category.questions_id3 = answers.questions_id2 and answers.user_id = 1
WHERE extra_category = 1 AND category LIKE '%1%'
order by case when user_id = '1' then 1 else 0 end, a.id ASC