[英]is there a better way to write this mysql select query?
SELECT jobs.*, user_table.*
FROM jobs
INNER JOIN user_table
ON jobs.userid = user_table.userid WHERE
(user_table.userid = ".$_SESSION['userid']." AND approved = 1) OR
(user_table.userid = ".$_SESSION['userid']." AND approved = 2)
我以前擁有它的方式不起作用是:
SELECT jobs.*, user_table.*
FROM jobs INNER JOIN user_table
ON jobs.userid = user_table.userid WHERE
user_table.userid = ".$_SESSION['userid']." AND approved = 1 OR approved = 2
第一個有效,但想知道是否有更短的方法。 第二個較短,但不起作用,因為它會拉取已批准等於2但用戶ID不等於會話userid的記錄。
您可以嘗試IN語法:
WHERE user_table.userid = ".$_SESSION['userid']."
AND approved IN (1,2)
如果您在usertable(userid, approved)
上創建復合索引, usertable(userid, approved)
該查詢將利用該索引(如果approved
在user_table
approved
,則無法從您的問題中得知)。
更改
user_table.userid = ".$_SESSION['userid']." AND approved = 1 OR approved = 2
至
user_table.userid = ".$_SESSION['userid']." AND (approved = 1 OR approved = 2)
在第二個查詢中
SELECT jobs.*, user_table.*
FROM jobs JOIN user_table
ON jobs.userid = user_table.userid WHERE
user_table.userid = ".$_SESSION['userid']." AND (approved = 1 OR approved = 2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.