繁体   English   中英

mysql加入多个条件(不是OR,而是AND)

[英]mysql join with multiple conditions (not OR but AND)

我在连接表时遇到问题,并使用了多种条件...我的代码:

SELECT * FROM 
   (SELECT sid, MAX(info_date_add) AS max_info_date_add FROM skiresort GROUP BY sid) skiresort_max 
INNER JOIN skiresort 
   ON 
      skiresort_max.sid = skiresort.sid AND 
      skiresort_max.max_info_date_add = skiresort.info_date_add 
JOIN skiresort_theme_value 
   ON skiresort_theme_value.skiresort_id = skiresort.id 
WHERE 
   skiresort_theme_value.skiresort_theme_id = '1' AND 
   skiresort_theme_value.skiresort_theme_id = '2' AND 
   skiresort_theme_value.skiresort_theme_id = '4' 
GROUP BY skiresort.sid 
ORDER BY skiresort.title_en

在此代码中,条件在WHERE子句中。 我也尝试加入JOIN ON(...),但是也没有用。 当我只有一种情况时,它会起作用。 我读了一些有关使用OR而不是AND的文章,它起作用了,但是却没有达到我的预期。 我只需要搜索具有特定ID(多个)的行。

为什么不使用它而不是许多条件。

WHERE 
         skiresort_theme_value.skiresort_theme_id in (1, 2,4) 

GROUP BY skiresort.sid

HAVING COUNT(DISTINCT skiresort_theme_value.skiresort_theme_id) = 3
ORDER BY skiresort.title_en

将条件添加到WHERE时,条件必须来自FROM tbl添加条件JOIN ON尝试以下操作:

SELECT * FROM 
   (SELECT sid, MAX(info_date_add) AS max_info_date_add FROM skiresort GROUP BY sid) skiresort_max 
INNER JOIN skiresort 
   ON 
      skiresort_max.sid = skiresort.sid AND 
      skiresort_max.max_info_date_add = skiresort.info_date_add 
JOIN skiresort_theme_value 
   ON (skiresort_theme_value.skiresort_id = skiresort.id AND skiresort_theme_value.skiresort_theme_id = '1' AND skiresort_theme_value.skiresort_theme_id = '2' AND skiresort_theme_value.skiresort_theme_id = '4')
GROUP BY skiresort.sid 
ORDER BY skiresort.title_en

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM