表股东
stockholder_id election_id user_id
1 1 1
2 1 2
3 2 3
表用户
user_id user_type
1 1
2 1
3 1
4 1
5 1
select
*
from
tbl_users
left join tbl_stockholders
on tbl_stockholders.user_id = tbl_users.user_id
where
user_type=1
and stockholders.user_id is null
and election_id <> 1
我想搜索的election_id不等于1,用户类型等于1
stockholder_id election_id user_id user_type
3 2 3 1
null null 4 1
null null 5 1
这是更新
抱歉,我的问题应该是使用参数election_id从tbl_users中排除tbl_stockholders。因为当我有一个重复的user_id时存在问题
表股东
stockholder_id election_id user_id
1 1 1
2 1 2
3 2 3
4 1 3
在上一个答案中,这是elect_id&lt;&gt; 2
时的结果stockholder_id election_id user_id user_type
3 1 3 1
null null 4 1
null null 5 1
这一定是
stockholder_id election_id user_id user_type
null null 4 1
null null 5 1
这是我目前无法正常工作的代码
从tbl_users中选择* 哪里不存在(从tbl_stockholders中选择*,其中election_id&lt;&gt; 2)
答案 0 :(得分:1)
试试这个:
SELECT * FROM users u
LEFT JOIN stockholders s ON u.user_id = s.user_id
WHERE u.user_type = 1 AND (s.election_id <> 1 OR s.election_id IS NULL)
小提琴here。
答案 1 :(得分:0)
我想,这是你应该做的:
select
*
from
tbl_stockholders
left join tbl_users
on tbl_users.user_id = tbl_stockholders.user_id
where
(user_type=1
and election_id <> 1)
我不认为你打算选择null user_ids。这也会使连接无效,即你说加入了两个基于user_id的表,但是从第一个表中选择了null user_id。