SELECT user_info.s_name, user_info.name, user_info.f_name, user_info.usr_id, user_info.img_path, Village_master.v_nm
FROM Village_master
INNER JOIN User_reg_master ON Village_master.v_id = User_reg_master.v_id
INNER JOIN user_info ON User_reg_master.usr_id = user_info.usr_id
WHERE user_info.usr_id NOT LIKE @u_id
AND user_info.usr_id NOT LIKE (
SELECT pers_dict_master.pers_dict_ids
FROM pers_dict_ids
WHERE pers_dict_master.usr_id=@u_id
)
usr_id |的 pers_dict_usr_id
1 | 13
1 | 6
答案 0 :(得分:0)
你面临的问题是这个,
user_info.usr_id NOT LIKE
(SELECT pers_dict_master.pers_dict_ids
FROM pers_dict_ids
WHERE pers_dict_master.usr_id=@u_id)
这是您的子查询
(SELECT pers_dict_master.pers_dict_ids
FROM pers_dict_ids
WHERE pers_dict_master.usr_id=@u_id)
提取两列。但在LIKE
命令中,您使用的是一列。
所以让它工作USE NOT IN
COMMAND
SELECT user_info.s_name,
user_info.name,
user_info.f_name,
user_info.usr_id,
user_info.img_path,
Village_master.v_nm
FROM Village_master
INNER JOIN User_reg_master ON Village_master.v_id = User_reg_master.v_id
INNER JOIN user_info ON User_reg_master.usr_id = user_info.usr_id
WHERE user_info.usr_id NOT LIKE @u_id
AND user_info.usr_id NOT IN
( SELECT pers_dict_master.pers_dict_ids
FROM pers_dict_ids
WHERE pers_dict_master.usr_id=@u_id )
答案 1 :(得分:0)
您可能应该提供有关您的问题的更多详细信息。子查询是否应该返回多个结果?如果是这样,那么你可以简单地使用TOP(即选择前1 ...)来获得单个结果,并且如果你想从该结果集中获得某个排序的最高值,则将ORDER BY添加到子查询。
如果问题是子查询在不应该返回的情况下返回的结果超过1,那么问题就更深了。看起来你可能打算使用IN作为子查询和进行不同的比较,但这很难说。也许你的意思是这个?:
user_info.usr_id NOT IN
(SELECT pers_dict_master.pers_dict_ids
FROM pers_dict_ids WHERE pers_dict_master.usr_id=@u_id)