mysql - 如何在mysql中同时使用NOT LIKE和JOIN?

标签 mysql join sql-like

我需要从查询中排除一些记录,其中日期名称在排除值“excl_days”中设置。

简单的功能正在运行:

SELECT post_id, start, end, excl_days FROM `mytable_events` 
WHERE `excl_days` NOT LIKE '%".$today_name."%' 
ORDER BY DATE(start) DESC

但是对于 JOIN 和 GROUP,我在添加 NOT LIKE 后得到空结果。没有 NOT LIKE 一切都工作正常。

SELECT o1.post_id, o1.start, o1.end, o1.excl_days 
FROM `mytable_events` o1 
JOIN `mytable_posts` o2 ON o1.post_id = o2.ID 
WHERE `o1.excl_days` NOT LIKE '%".$today_name."%'
GROUP BY o1.post_id ORDER BY DATE(o1.start) DESC

完整查询是:

SELECT o1.post_id, o1.start, o1.end, o1.excl_days 
FROM `mytable_events` o1 
JOIN `mytable_posts` o2 ON o1.post_id = o2.ID 
WHERE DATE(o1.start) <= '".$today."' AND DATE(o1.end) >= '".$today."'
AND o2.post_type = 'events' AND o2.post_status = 'publish' 
AND `o1.excl_days` NOT LIKE '%".$today_name."%'
GROUP BY o1.post_id ORDER BY DATE(o1.start) DESC

如何使其发挥作用?谢谢您的帮助。

最佳答案

试试这个:

  SELECT o1.post_id, o1.start, o1.end, o1.excl_days 
  FROM `mytable_events` o1 
  JOIN `mytable_posts` o2 ON (o1.post_id = o2.ID 
  AND o1.excl_days NOT LIKE '%".$today_name."%')
  GROUP BY o1.post_id ORDER BY DATE(o1.start) DESC

关于mysql - 如何在mysql中同时使用NOT LIKE和JOIN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15363890/

相关文章:

mysql - 在 phpMyAdmin 中创建没有 super 权限的 View

php - 在 PHP 和 MySql 中为每个 ID 创建一个评论框

android - Realm.io - 如何使用通配符 %LIKE% 进行查询

mysql - 使用 "like"语句编写查询

PHP 为什么只输出 1 行?

php - MySQL Where Date (not datetime) as Week of year

mysql - 仅选择特定列的内连接 3 个表

mysql - 自联接在查询结果中显示 null Mangers

MySQL 限制 LEFT JOIN 加入后的子查询

mysql - Left Join 和几个 LIKE 使我的查询非常慢