2014-03-31 104 views
0
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 [email protected]_id 
) 

usr_id | pers_dict_usr_id子查詢返回多個值

1 | 13

1 | 6

+0

使用NOT IN而不是NOT LIKE。 – Mihai

回答

0

你所面臨的問題是這樣的,

user_info.usr_id NOT LIKE 
    (SELECT pers_dict_master.pers_dict_ids 
    FROM pers_dict_ids 
    WHERE [email protected]_id) 

這是你的子查詢

(SELECT pers_dict_master.pers_dict_ids 
    FROM pers_dict_ids 
    WHERE [email protected]_id) 

它取2 columns.But在LIKE命令你使用的是一列。

因此,使它工作中使用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 [email protected]_id) 
0

你或許應該包含您的問題,一些更多的細節。子查詢是否期望返回多個結果?如果是這樣,那麼你可以簡單地使用TOP(即選擇top 1 ...)來得到一個單一的結果,並且如果你想從該結果集中獲得一個特定的排序最高值,可以向子查詢添加一個ORDER BY。

如果問題是子查詢返回的結果不應該超過1個,那麼你的問題就更加深入了。看起來您可能打算使用IN作爲子查詢並進行不同的比較,但很難說清楚。也許你的意思是:

user_info.usr_id NOT IN 
    (SELECT pers_dict_master.pers_dict_ids 
     FROM pers_dict_ids WHERE [email protected]_id)