MySQL 左关联右表条件查询

MySQL的新知识:

之前数据库没学好,不知道LEFT JOIN ON后边可以加条件

首先业务是有个A表,然后会依据A表信息来在B表生成一条对应数据,

操作时候展示A表数据,如果B表已经有对应数据,显示数据,如果没有,则可以新增数据。

B表中有保存A表的ID。

SELECT
	a.id AS "a.id",
	a.CODE AS "a.code",
	b.id AS "b.id",
	b.CODE AS "b.code",
	b.a_id AS "b.aID"
FROM
	a
	LEFT JOIN b ON b.a_id = a.id

查询结果:

现在要求是要B的数据下游会操作,如果数据有问题就会作废掉,这里就用code来标识,当code为1时,就说明这条数据是作废的。

在上游的显示中,就是A依然有数据,但B为空。

最开始在where条件中写,SQL:

SELECT
	a.id AS "a.id",
	a.CODE AS "a.code",
	b.id AS "b.id",
	b.CODE AS "b.code",
	b.a_id AS "b.aID"
FROM
	a
	LEFT JOIN b ON b.a_id = a.id
WHERE
	b.CODE = ‘0‘

 查询结果:

很明显就数据丢了一条,达不到目的,突然间一个思路,where条件能否放到LEFT JOIN ON的后边,试了一下,效果有了:

SELECT
	a.id AS "a.id",
	a.CODE AS "a.code",
	b.id AS "b.id",
	b.CODE AS "b.code",
	b.a_id AS "b.aID"
FROM
	a
	LEFT JOIN b ON b.a_id = a.id
	AND b.CODE = ‘0‘

查询结果:

还是第一次意识到LEFT JOIN ON后边的条件可以用AND来实现多个

原文地址:https://www.cnblogs.com/JillisRealM/p/11994502.html

时间: 2024-10-08 21:23:24

MySQL 左关联右表条件查询的相关文章

mysql左连接右连接(查询两张表不同的数据)

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 :right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录:inner join(等值连接) 只返回两个表中联结字段相等的行: 表A数据: 表B数据: 1.查询两张表中都有的记录: sql: SELECT a.* FROM a INNER JOIN b ON a.a_id = b.b_id; 2.查询表A中有,表B中没有的数据: sql: SELECT a.* FROM a LEFT JO

cognos如何制作维表左关联事实表的报表

需求描述:日期维表左关联事实表,当选择某个月的时候,我们需要把那个月每一天的数据展现出来,事实表如没数据就显示空.如下效果图: 最开始我试过使用FM来设计维表和事实表为左关联,但是由于需要2个参数,一个基于维表的月份参数,一个是基于事实表中销售类型作为参数.发现报表始终展现出来的是内连接的效果.现在我们可以巧妙利用工具箱里面的"并集"来实现,如下图: 查询1是事实表的数据,设置如下: 查询2是维表的数据,数据项与查询1的一样,但是查询2里面关于事实数据的数据项,我们统一设置表达式为:&

MySQL DML操作--------多表联合查询实战

1. 背景 * 多表联合查询是把不同表的记录到一起的一种方式 * 在SQL标准中规划的联合(join)大致分内连接,外连接,全连接.其中外连接又分左外连接,右外连接. 2. 内连接例子 (inner join) [ 员工 --> 部门 ] * 查看员工表[ employees ]和部门表[ departments ]结构 mysql> desc employees; +-----------+---------------+------+-----+---------+------------

MySQL学习总结(五) --- 表数据查询

查询数据记录,是指从数据库对象表中获取所要查询的数据记录,该操作可以说是数据最基本的操作之一,也是使用频率最高.最重要的数据操作. 1.单表数据记录查询 1.1.简单数据查询 SELECT field1,field2,…,fieldn FROM table_name,filed可以是表中所有的字段,也可以是部分字段. SELECT * FROM table_name ,从表中查询所有的数据.*符号可以代替所有的字段,但是这种方式不够灵活,只能按照表中字段的顺序固定进行显示,不能够随便改变字段的显

MySql(四)Select条件查询

select条件查询的格式如下: SELECT 查询列表FROM 表名WHERE 筛选条件:123456根据筛选条件可以分为以下几类: 按照条件按表达式进行筛选 常用条件运算符如下:> .<.=.!=.<>.<=.>= 按照逻辑表达式进行筛选 ? 逻辑运算符的主要作用:用于连接条件表达式 & . || .! .and.or.not 模糊查询 like.between and .in.is null like通常和通配符搭配使用:①:%:代表任意多个字符 ②:_:

mysql左连接多表查询

select 需要的字段用a.xx的形式写 from a表 as a left join b表 as b on a.xx=b.xx left join c表 as c on b.xx=c.xx where 后面就看自己的情况加判断;

mysql 左连接 右连接 内链接

一般所说的左连接,右连接是指左外连接,右外连接.做个简单的测试你看吧.先说左外连接和右外连接:[[email protected]#16-12月-11] SQL>select * from t1; ID NAME---------- --------------------1 aaa2 bbb [[email protected]#16-12月-11] SQL>select * from t2; ID AGE---------- ----------1 203 30左外连接:[[email p

navicat for mysql导入关联的表

up_provincelist的id是up_schoollist表中province_id的外键,我之前导入表的时候,province_id全部变成0了,求教怎么解决.

mysql大数据分表后查询

当数据量猛增的时候,大家都会选择库表散列等等方式去优化数据读写速度,举例说明: 1亿条数据,分100张表 1.首先创建100张表 $i=0;while($i<=99){echo "$newNumber \r\n";$sql="CREATE TABLE `code_".$i."` ( `full_code` char(10) NOT NULL, `create_time` int(10) unsigned NOT NULL, PRIMARY KEY