簡體   English   中英

有沒有更好的方法來編寫此mysql選擇查詢?

[英]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)該查詢將利用該索引(如果approveduser_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM