sql 取自然年的方法

    

  select nvl(sum(order_ticket_num),0)
          from crs_order c
          left join crs_order_contact cc
            on c.id_order = cc.id_order
         where cc.openid = #{openid,jdbcType=VARCHAR}
           and c.tm_update >
               to_date((to_char(trunc(sysdate, 'year') - 1, 'yyyy') ||
                       '-12-31 23:59:59'),
                       'yyyy-mm-dd hh24:mi:ss')
           and c.tm_update <= sysdate
           and c.is_del = 0
           and c.order_status != 10021030
           and c.order_status != 10021040
           and cc.is_del = 0
           and c.product_type='10271010'
           and c.source_code = #{sourceCode,jdbcType=VARCHAR}    

 

用的oracle数据库,以当前系统时间为参数,取表里时间字段大于上一年12月31日23:59:59秒并且小于当前系统时间的值 就是自然年内的数据。  如果测试不通过,则麻烦校对一下 线上库之间的系统时间 是否一致

### SQL 自然连接与等价连接的区别及使用场景 #### 1. 自然连接(Natural Join) 自然连接是一种特殊的内连接,它基于两个表中名称相同的列进行隐式匹配。在自然连接中,无需显式指定 `ON` 子句来定义连接条件,系统会自动选择具有相同名称的列作为连接键[^5]。 例如,假设有两个表 `person` 和 `address`,它们都有一个名为 `id` 的列,则以下查询表示自然连接: ```sql SELECT * FROM person NATURAL JOIN address; ``` 此查询会自动将 `person.id` 和 `address.id` 作为连接条件,并且结果集中只保留一列 `id`。 #### 2. 等价连接(Equivalent Join) 等价连接通常指通过显式定义 `ON` 子句实现的内连接(Inner Join)。这种连接方式需要用户明确指定用于匹配的列或条件[^1]。 例如,以下查询表示等价连接: ```sql SELECT * FROM person INNER JOIN address ON person.id = address.id; ``` 此查询明确指定了 `person.id` 和 `address.id` 作为连接条件,结果集中会包含两列 `person.id` 和 `address.id`。 #### 3. 区别 - **连接条件**:自然连接基于表中名称相同的列自动匹配,而等价连接需要用户显式指定连接条件。 - **结果集列数**:自然连接会在结果集中去除重复的列名,而等价连接会保留所有列,包括重复的列[^5]。 - **灵活性**:等价连接更灵活,因为它允许用户根据业务需求定义复杂的连接条件,而自然连接仅限于名称相同的列。 - **可读性**:自然连接的语法较为简洁,但可能不够直观,尤其是当表中有多个同名列时;等价连接则更加明确和可控。 #### 4. 使用场景 - **自然连接**:适用于两个表之间存在唯一的关键字列(如主键和外键),并且希望简化查询语法的场景。例如,在数据仓库中,维度表和事实表之间通常有明确的键关系,可以使用自然连接[^5]。 - **等价连接**:适用于需要精确控制连接条件的复杂查询场景。例如,当连接条件涉及多个列或复杂的逻辑表达式时,等价连接是更好的选择。 ### 示例代码 以下是一个对比自然连接和等价连接的示例: #### 自然连接 ```sql SELECT person.name, address.city FROM person NATURAL JOIN address; ``` #### 等价连接 ```sql SELECT person.name, address.city FROM person INNER JOIN address ON person.id = address.id; ``` ### 总结 自然连接和等价连接各有优劣,选择哪种方式决于具体的需求。自然连接适合简单、明确的键关系场景,而等价连接则提供了更高的灵活性和可控性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值