繁体   English   中英

如何选择全左表,条件与右表中的记录匹配?

[英]How to select full left table and where condition match records from right table?

请有人告诉我该怎么做。 我有两个表,我需要选择整个第一个表(页面),并从第二个表中选择user_id = 1

表1:页

--------------------------------------
  page_id  |  page_url |   details   |  
--------------------------------------
      1    |    xxxx   |   wdredrr   |
      2    |    yyyy   |   rdsacsa   |
      3    |    zzzz   |   rscsacc   |
      4    |    aaaa   |   xdsxsxs   |
      5    |    bbbb   |   drxcraa   |
--------------------------------------

表2:控制

-------------------------------------
control_id |  page_id  |   user_id  |  
-------------------------------------
      1    |      1     |      1    |
      2    |      3     |      1    |
      3    |      4     |      1    |
      4    |      1     |      2    |
      5    |      2     |      2    |
-------------------------------------

这就是预期的输出。

期望的输出

--------------------------------------------------------------
  page_id  |  page_url |   details  | control_id |   user_id  |
--------------------------------------------------------------
      1    |    xxxx   |   wdredrr   |      1     |      1    |
      2    |    yyyy   |   rdsacsa   |    null    |    null   |
      3    |    zzzz   |   rscsacc   |      2     |      1    |
      4    |    aaaa   |   xdsxsxs   |    null    |    null   |
      5    |    bbbb   |   drxcraa   |      3     |      1    |
--------------------------------------------------------------

页面JOIN控件打开page.page_id = control.page_id WHERE control.user_id ='1'

请有人帮忙解决这个问题。 我尝试了LEFT JOIN和RIGHT JOIN,但是我只获得了user_id = 1个匹配的行

将your where子句放在on子句中,您应该得到预期的结果:

select * from pages JOIN control ON page.page_id = control.page_id AND control.user_id = '1'

尝试这个

SELECT p.page_id, p.page_url, p.details, IF(c.user_id=1,c.control_id,NULL), IF(c.user_id=1,c.user_id,NULL) FROM page p LEFT JOIN control c ON(c.page_id=p.page_id)

Inner join将检查相关数据是否具有相关表中的联接条件,因此它将过滤出不匹配的数据。 您需要使用left join并且joining clause的条件如下所示:

select 
p.*,
c.control_id,
c.user_id 
from page p left join control c on c.page_id = p.page_id and c.user_id = 1 
order by p.page_id;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM