service_option
表和room
表具有相同的列room_key
,room
表和user
表共享同一列{{1我想要的是从服务选项中获取用户的信息。
user_key
使用嵌套在另一个IN中的IN变得非常低效。
答案 0 :(得分:2)
这可能是您正在寻找的查询:
SELECT U.user_key
,U.user_id
,U.user_status
,U.user_company_name
FROM [user] U
INNER JOIN room R ON R.user_key = U.user_key
INNER JOIN service_option S ON S.room_key = R.room_key
AND S.service_option_key = 3
AND S.ordered_service_Option_status != 0
INNER JOIN
方法将更高效,并使查询更具可读性。
希望这会对你有所帮助。
答案 1 :(得分:2)
不要使用WHERE IN,而是加入:
SELECT u.user_key, u.user_id, u.user_status, u.user_company_name
FROM user u, room r, service_option so
WHERE u.user_key = r.user_key
AND r.room_key = so.room_key
AND so.service_option_key = 3
AND so.ordered_service_option_status != 0
答案 2 :(得分:1)
SELECT u.user_key, u.user_id, u.user_status, u.user_company_name
FROM
user u join room r on u.user_key = r.user_key
join service_option so on so.room_key = r.room_key
WHERE
so.service_option_key = 3 AND so.ordered_service_option_status !=0