相关疑难解决方法(0)

SQL Server中左连接和右连接之间的区别

我知道SQL Server中的连接.

例如.Table1,Table2有两个表.

他们的桌子结构如下.

create table Table1 (id int, Name varchar (10))

create table Table2 (id int, Name varchar (10))
Run Code Online (Sandbox Code Playgroud)

表1数据如下:

    Id     Name     
    -------------
    1      A        
    2      B    
Run Code Online (Sandbox Code Playgroud)

表2数据如下:

    Id     Name     
    -------------
    1      A        
    2      B 
    3      C
Run Code Online (Sandbox Code Playgroud)

如果我执行下面提到的两个SQL语句,则两个输出都是相同的

select *
from Table1
  left join Table2 on Table1.id = Table2.id

select *
from Table2
  right join Table1 on Table1.id = Table2.id
Run Code Online (Sandbox Code Playgroud)

请解释上述SQL语句中左右连接的区别.

sql sql-server join left-join right-join

218
推荐指数
7
解决办法
29万
查看次数

是否需要正确的加入?

是否存在任何需要RIGHT JOIN的查询,或者是否可以使用LEFT JOIN重写它们?

更具体地说,如果没有正确的连接,你如何重写这个(我猜是没有任何子查询或其他幻想):


SELECT *
FROM t1
LEFT JOIN t2 ON t1.k2 = t2.k2
RIGHT JOIN t3 ON t3.k3 = t2.k3

sql

13
推荐指数
4
解决办法
2334
查看次数

在 Diesel 中执行正确的联接

我有一个函数,它接受两个可选的过滤参数,如果提供了这些参数,则过滤表中的数据。为此,我创建了一个盒装查询。我想用这个盒装查询创建一个正确的连接。Diesel 的当前文档没有提到右连接,但它似乎更喜欢这种belonging_to方法。我已将我的代码简化为一个示例:

#[macro_use] extern crate diesel;

use diesel::prelude::*;

table! {
    groups (id) {
        id -> Int4,
        name -> Text,
    }
}

table! {
    user_groups (id) {
        id -> Int4,
        user_id -> Int4,
        group_id -> Int4,
    }
}

allow_tables_to_appear_in_same_query!(groups, user_groups);

#[derive(Debug, Queryable)]
struct Group {
    id: i32,
    name: String,
}

#[derive(Debug, Queryable, Associations)]
#[belongs_to(Group)]
struct UserGroup {
    id: i32,
    user_id: i32,
    group_id: i32,
}

fn filter(
    name: Option<&str>,
    user_id: Option<i32>,
    conn: &diesel::PgConnection,
) -> Result<Vec<(Group, Vec<UserGroup>)>, Box<dyn std::error::Error>> { …
Run Code Online (Sandbox Code Playgroud)

postgresql rust rust-diesel

7
推荐指数
1
解决办法
1253
查看次数

标签 统计

sql ×2

join ×1

left-join ×1

postgresql ×1

right-join ×1

rust ×1

rust-diesel ×1

sql-server ×1