今天在寫列表條件查詢時,發現加上條件以後,結果不是很理想,由於有用到instr 來進行模糊查詢,因此覺得是instr和or 使用時會有前後執行順序。查找了資料後發現是and 與or 一塊兒使用時,須要注意到的問題
如下是個人查詢語句html
SELECT product_id ,product_name,create_uid ,emai FROM product p INNER JOIN user_product up ON p.product_id = up.product_id LEFT JOIN istats_product_total spt ON p.product_id = spt.product_id LEFT JOIN `user` u ON p.`create_uid`=u.id WHERE p.server_type=0 AND up.`user_type` =1 AND up.uid =85 OR (up.uid IN (SELECT id FROM `user` u WHERE u.parent_uid =85 AND u.`account_type` IS NULL) AND up.`user_type` =2) AND (INSTR(u.email, 'xxxxx@aliyun.com') ) GROUP BY p.product_id ORDER BY p.create_time DESC
能夠看到,除了模糊查詢,固定的條件已經用到了and 和or 。我但願獲得的是條件爲 uid =59,user_type =1 或者 parent_uid=59 ,user_type =2 這樣的結果 ,而且模糊查詢條件時也能過濾一部分結果。但其實查詢結果沒有問題,加了模糊查詢以後就發現沒什麼用
參考了下這個https://www.cnblogs.com/muzixiaodan/p/5632606.html
修改成,就能夠了
mysql