SQL选择多个和

| 我有一个很长的sql语句,我试图向其中添加一些AND条件,但是它不起作用。 这是我的声明:
if($cat==\"att\") { $sqlCatC = \"INNER JOIN yt_att_data CAT
    ON CAT.busID = R.id AND CAT.subcatID = 5 AND CAT.subcatID = 136 AND CAT.deleted = 0\"; }

//Get RegionInfo busID based on region, approved
    $sql= \"SELECT DISTINCT CAT.busID,R.id,companyName,membershipID,addressID,city,logo,descriptionShort FROM yt_Business_RegInfo R
    $sqlReg
    INNER JOIN yt_Business_Seasons S
    ON R.id = S.busID AND S.deleted = 0
    INNER JOIN yt_Business_Address A
    ON R.addressID = A.id
    INNER JOIN yt_Business_Membership M
    ON R.membershipID = M.id AND M.approved = 1
    $sqlCatC
    WHERE R.deleted = 0
    ORDER BY R.companyName ASC LIMIT $start, $limit\";
我试图在顶部$ sqlCatC中添加一个AND。条件,其中CAT.subcatID等于5和136。它可以用于检查单个CAT.subcatID,但不能用于两个。任何建议,将不胜感激。     
已邀请:
像这样使用
IN
关键字:
CAT.subcatID IN(5,136)
替换您的两个AND。     
每次必须使用OR而不是AND时,subcatID不能为5和136。 更改为并尝试
ON CAT.busID = R.id AND 
(CAT.subcatID = 5 OR CAT.subcatID = 136) 
AND CAT.deleted = 0\";
或者您可以使用IN来简化它
 ON CAT.busID = R.id AND 
 CAT.subcatID IN (\'5\',\'136\') 
    AND CAT.deleted = 0\";
    
将同一列等于两个不同的值时,不能应用AND条件。 使用OR条件。 将$ sqlCatC更改为如下所示:
$sqlCatC = \"INNER JOIN yt_att_data CAT  ON CAT.busID = R.id AND (CAT.subcatID = 5 OR CAT.subcatID = 136) AND CAT.deleted = 0\";
    

要回复问题请先登录注册