SQLite中LEFT JOIN保留左表全部数据的查询问题求助
问题解决方案
一、SQL左连接查询修复
你当前的查询语句问题出在LEFT JOIN的条件放错位置了。把匹配条件写在WHERE子句里,会过滤掉tab2中无匹配的行(此时tab2.email为NULL,LIKE判断不成立),导致只返回两边都匹配的数据,违背了左连接要保留tab1所有数据的初衷。
正确的写法是把连接条件放到ON子句中:
SELECT tab1.ID, tab1.email, tab1.email2, tab2.name FROM tab1 LEFT JOIN tab2 ON tab2.email LIKE tab1.email OR tab2.email LIKE tab1.email2
这样tab1的所有行都会被返回,tab2中无匹配的行对应的name字段会显示为NULL。
二、Markdown表格格式纠正
整理表格时出现格式错误,是因为没遵循标准的Markdown表格结构,给你一个正确的模板:
| 列名1 | 列名2 | 列名3 | |-------|-------|-------| | 内容1 | 内容2 | 内容3 | | 内容4 | 内容5 | 内容6 |
注意要点:
- 第一行是表头,用竖线分隔各列
- 第二行必须是分隔线,用
---填充每一列(长度不需要和表头完全一致,但要有) - 后续行是表格内容,同样用竖线分隔
比如你要展示表结构,可以这么写:
| tab1字段 | 类型 | |---------|------| | ID | INT | | email | TEXT | | email2 | TEXT | | tab2字段 | 类型 | |---------|------| | email | TEXT | | name | TEXT |
按照这个结构写,就不会出现格式错误了。
内容的提问来源于stack exchange,提问作者Glob Dug
相关产品推荐
相关产品推荐

