兩個表 - all_data
和selected_place_day_hours
比較內使用加入,其中
all_data
有place_id
,day
,hour
,metric
selected_place_day_hours
有場place_id
,day
,hour
我需要子集all_data
,使得只有具有place_id
,的記錄,hour
在selected_place_day_hours
被選中。
我可以去它
1.使用inner join
select a.*
from all_data as a
inner join selected_place_day_hours as b
on (a.place_id = b.place_id)
and (a.day = b.day)
and (a.hour = b.hour)
;
2.使用where in
select *
from all_data
where
place_id in (select place_id from selected_place_day_hours)
and day in (select day from selected_place_day_hours)
and hour in (select day from selected_place_day_hours)
;
我想對爲什麼一些想法兩種方式,什麼時候,如果你會從功能和perfo中選擇一個愛情觀點?
一個想法是,在#2以上,可能子選擇不是性能友好的,也更長的代碼。
@的同樣的目的會不'和'照顧這個? – user3206440
@ user3206440否如上例所示:'place_id IN(1,4444)AND day IN(4,444)AND hour IN(9,6)'不等於'(place_id,day,hour)IN( 1,4,9),(4444,4444,6)) –