php - mysql查询排除重复记录

标签 php mysql distinct

我有一个简单的问题。我的数据库中有下表。

CREATE TABLE IF NOT EXISTS `wp_agp_settings_data` (
  `ID` int(50) NOT NULL AUTO_INCREMENT,
  `agp_user_id` int(10) NOT NULL,
  `agp_order_id` int(10) NOT NULL,
  `agp_blog_id` int(10) NOT NULL,
  `agp_keywords` varchar(255) NOT NULL,
  `agp_keywords_date` varchar(20) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

INSERT INTO `wp_agp_settings_data` (`ID`, `agp_user_id`, `agp_order_id`, `agp_blog_id`, `agp_keywords`, `agp_keywords_date`) VALUES
(1, 2, 5, 4, 'keyword1', '1369872000'),
(2, 2, 0, 6, 'keyword2', '1369872000'),
(3, 2, 0, 3, 'masterkey', '1369872000'),
(4, 2, 0, 4, 'testkey', '1369872000');

我只想获得不同的 agp_blog_ids。 到目前为止我这样做了:

SELECT agp_blog_id
FROM wp_agp_settings_data
WHERE
        agp_user_id = 2
        AND (agp_keywords NOT LIKE "%keyword1%" OR agp_keywords NOT LIKE "%key1%")
        AND agp_keywords_date BETWEEN 1369872000 AND 1370044800
GROUP BY agp_blog_id

但是我想完全排除结果“4”,因为一条记录已经符合条件。

一些帮助将不胜感激。

最佳答案

我认为这就是您正在尝试做的事情:

SELECT agp_blog_id
FROM wp_agp_settings_data
WHERE
        agp_user_id = 2
        AND agp_blog_id NOT IN(
                SELECT agp_blog_id FROM wp_agp_settings_data WHERE agp_keywords LIKE "%keyword1%")
        AND agp_keywords_date BETWEEN 1369872000 AND 1370044800
GROUP BY agp_blog_id

这将排除 agp_keywords 列中包含“keyword1”的任何结果。您可以添加要排除在“NOT IN” block 内的其他关键字

关于php - mysql查询排除重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16873056/

相关文章:

php - 从PHP脚本exec()执行时,无法从gradle中获取输出

php - 当我将表单方法从 "post"更改为 "get"时,url 不正确

php - 无法使搜索栏响应

php - 日期未使用 laravel 保存到 mySQL 数据库

C# 从列表中获取可能的 DISTINCT 组合

Mysql 计算具有特定属性的行

php - WooCommerce 产品 SKU 检查不起作用

MySQL递增值

java - 将现有对象的值添加到 JTable?

mysql - 在 MySQL 5.7.17 中使用 order by 和 math 函数选择 count distinct 时的结果不正确