合并两个查询或任何其他方法的SQL查询

时间:2019-03-29 19:25:45

标签: sql sql-server

我有两个桌子

1-个用户表 2. friends_table

users_tbl列是

user_id int primary key, user_name text 

friend_tbl列是

sender_id references users_tbl (user_id) int, 
receiver_id int references users_tbl (user_id), 
is_accepted bit

我需要查询特定的@user_id,并且它需要返回所有用户,而没有@user_id加入friends_tbl列。

示例数据表:

users_tbl

user_id    user_name
----------------------------
    1      tarik 
    2      alex
    3      frank

friends_table

sender_id    receiver_id   is_accepted
--------------------------------------
    1            2              0

输入

user_id =1 

输出

user_id    user_name    is_accepted
------------------------------------
    2      alex               0
    3      frank           NULL

我在mvc中使用此函数,该函数获取用户ID,并返回所有加入了专门针对传入is_accepted的{​​{1}}列的用户的表。

1 个答案:

答案 0 :(得分:1)

从用户表中获取所有用户信息,而无需使用参数user。
与好友表左联接并获取is_accepted列数据。

Declare @users_tbl table
(
    user_id int primary key, 
    user_name varchar(100)
)

Declare @friend_tbl table
(
    sender_id int, 
    receiver_id int, 
    is_accepted bit
)

insert into @users_tbl values(1,'tarik')
insert into @users_tbl values(2,'alex')
insert into @users_tbl values(3,'frank')

insert into @friend_tbl values(1,2,0)


Declare @userId int = 3

Select u.user_id, u.User_name, f.is_accepted from @users_tbl u
    Left Join @friend_tbl f on u.user_id = f.receiver_id AND f.sender_id = @userId
    Where u.user_id != @userId