2014-03-31 2 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_id2 개 이상의 값을 반환하는 하위 쿼리

1 | 13

1 | 당신이 직면하고있는 문제는이 6

+0

[좋지 않음] 대신 [NOT IN]을 사용하십시오. – 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) 

그것은 당신이 한 열을 사용하는 LIKE 명령에서 두 columns.But를 가져 오는 당신의 서브 쿼리입니다.

은 그래서 당신은 아마 당신의 문제에 대한 좀 더 세부 사항을 포함해야 사용을 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 (예 : select top 1 ...)을 사용하고 결과 세트에서 특정 정렬 된 최상위 값을 얻으려면 하위 쿼리에 ORDER BY를 추가하면됩니다.

하위 쿼리가 두 개 이상의 결과를 반환하지 않아야하는 경우 문제가 더 심각합니다. 하위 쿼리와 다른 비교를 위해 IN을 사용하려는 의도가있는 것 같지만 알기는 어렵습니다. 아마도 이것을 의미할까요? :

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