鍍金池/ 問(wèn)答/PHP  數(shù)據(jù)庫(kù)/ sql優(yōu)化:查詢(xún)時(shí)加判斷

sql優(yōu)化:查詢(xún)時(shí)加判斷

1.數(shù)據(jù)表的結(jié)構(gòu):
訂單ID:orderid,
用戶(hù)ID:memberid,
下單日期:order_date

2.需求:需要查詢(xún)出2017-04月下單的記錄(orderid,memberid),如果當(dāng)前記錄的用戶(hù)有在4月份之前下過(guò)單,第三列是否訂購(gòu)過(guò):是,4月份之前沒(méi)有下過(guò)單的,第三列是否訂購(gòu)過(guò):否,

3.已經(jīng)寫(xiě)好的sql:

SELECT orderid,memberid, '是' AS '是否訂購(gòu)過(guò)' FROM ordersum WHERE order_date >= '2017-04-01' AND order_date < '2017-05-01' AND memberid IN (SELECT memberid FROM ordersum WHERE order_date < '2017-04-01')
UNION
SELECT orderid,memberid, '否' AS '是否訂購(gòu)過(guò)' FROM ordersum WHERE order_date >= '2017-04-01' AND order_date < '2017-05-01' AND memberid  NOT IN (SELECT memberid FROM ordersum WHERE order_date < '2017-04-01')
ORDER BY orderid

可以實(shí)現(xiàn)該需求,只是感覺(jué)還有優(yōu)化的空間,請(qǐng)大家?guī)兔纯?,謝謝!

回答
編輯回答
萌吟

mysql 的 if 了解下。

2018年4月10日 06:56
編輯回答
拼未來(lái)
select orderid, memberid, bool_judge from (select orderid, memberid, case when order_date <= '2017-04-01' then '是' else '否' end as bool_judge) as test where order_date >= '' and order_date <= ''
2017年8月9日 18:34