มีทางไหนเลี่ยง not in บ้างไหมครับ พอเอาไปใช้กับ mysql เวอชั่นต่ำลงไป ช้ามาก เเละ ก็เจ้งไปเลยยย ผมอยากได้ผลลัพท์ประมานนี้
หรือเป็นที่อะไรคับ ใช้ Mysql ver.5.6.21 เป็นเครื่องพัฒนา เเล้วเอาไปใช้กับ ver.5.0 ไม่ได้ ช้ามาก
Code (SQL)
select distinct fmp.mem_id as id,flm.mem_comname_en as Name,fmp.mpag_status as pages from fl_member_page fmp
INNER JOIN fl_member flm on fmp.mem_id = flm.mem_id
where fmp.mem_id not in (select distinct mem_id from fl_member_page where mpag_status = 1) and flm.mem_status = 1
select a.* from a as a
inner join b as b on a.mem_id=b.mem_id
left join a as c on a.mem_id=c.mem_id and c.mpag_status = 1
where c.mem_id is null and flm.mem_status = 1
select distinct id, mem_comname as Name, pages
from fl_member flm # เอาตารางที่ ที field อ้างอิง เป็น unique คียขึ้นก่อน (เดาเอาจากชื่อ)
INNER JOIN
(
# บังคับให้สร้าง temp table ขจัดเรคคอร์ดที่ไม่ต้องการออกไป ให้เหลือ record ที่ต้องการ น้อยที่สุด
select distinct mem_id as id, mpag_status as pages
from fl_member_page as pg
where not exists(
select mem_id from fl_member_page
where mem_id=pg.mem_id and mpag_status=1
limit 1
# ใส่ limit ไปด้วยบังคับ เจอแล่วหยุด ถ้ามี index ( mem_id, mpag_status) ก็จะเร็วขึ้นอีก
# แต่ตอน insert อาจจะช้า เพราะต้องสร้าง index
)
) fmp
on flm.mem_id=fmp.id
where flm.mem_status = 1