Iva*_*kov 20 mysql join left-join
我有以下表格:
页面:
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| page_id | int(11) | NO | PRI | NULL | auto_increment |
| type | varchar(20) | NO | | NULL | |
| categories | varchar(255) | NO | | NULL | |
| title | varchar(255) | NO | MUL | NULL | |
| text | longtext | NO | MUL | NULL | |
+------------+--------------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)
定制:
+---------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+------------------+------+-----+---------+-------+
| page_id | int(10) unsigned | NO | PRI | NULL | |
| key | varchar(255) | NO | PRI | NULL | |
| value | longtext | NO | | NULL | |
+---------+------------------+------+-----+---------+-------+
Run Code Online (Sandbox Code Playgroud)
我希望以下列方式加入表:
1)返回第一个表中的所有条目LEFT JOIN custom ON pages.page_id = custom.page_id
2)pages.type IN ('type_a', 'type_b', 'type_c')
3)第二个表中的"key"具有值"votes"custom.key = 'votes'
到目前为止我做了一切,但第三个条件是问题.如果key = 'votes'表自定义中没有条目,则查询仅返回带有条目的条目.NULL如果缺少条目,我想返回.
我需要key = 'votes',因为我有这个page_id的其他条目,其中键不是'投票',这复制了页面中的行
dgw*_*dgw 29
只需将contraint添加custom.key='votes'到LEFT JOIN
SELECT *
FROM pages LEFT JOIN custom
ON pages.page_id=custom.page_id AND custom.key='votes'
WHERE pages.type IN('type_a','type_b','type_c') ;
Run Code Online (Sandbox Code Playgroud)
我这样做:
SELECT *
FROM pages
LEFT JOIN
( SELECT * From custom where key='votes') cv
on pages.page_id = cv.page_id
WHERE pages.type IN ('type_a', 'type_b', 'type_c');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43982 次 |
| 最近记录: |