【问题标题】:MySQL - Pulling List depending on date and categoryMySQL - 根据日期和类别提取列表
【发布时间】:2013-11-19 16:52:11
【问题描述】:

这是这个问题的附加内容here

我有一张这样的桌子:

ID_____PostingDate_____PosterID____CategoryID
----------------------------------------------
1______05/01/2012______450_________a
2______05/30/2012______451_________a
3______06/17/2012______451_________b
4______12/10/2012______451_________c
5______06/14/2012______452_________l
6______09/15/2012______452_________l
7______05/01/2012______453_________m
8______07/04/2012______453_________n
9______04/05/2013______454_________p
10_____05/05/2012______454_________l
11_____06/12/2012______455_________x
12_____10/02/2012______455_________x
13_____02/12/2013______455_________y

我正在尝试获取在 2012 年 5 月或 6 月发布且此后未在同一类别中再次发布的所有 PosterID(包括潜在重复)和 CategoryID 的列表。

上表的期望结果:

PosterID_______PostingDate______CategoryID
--------------------------
450____________05/01/2012_______a
451____________05/30/2012_______a
451____________06/17/2012_______b
453____________05/01/2012_______m
454____________05/05/2013_______l

这是我已经/尝试过的:

感谢@Filipe Silva

SELECT DISTINCT PosterID
FROM table1
WHERE PostingDate BETWEEN '2012-05-01' AND '2012-06-30'
AND posterID NOT IN (SELECT PosterID
  FROM table1
  WHERE PostingDate > '2012-07-01');

虽然这只会删除那些在任何类别中再次发布的 PosterID,而不是特定类别

【问题讨论】:

    标签: mysql sql unique


    【解决方案1】:

    您必须在 CategoryID 字段上交叉两个选择的结果。 我认为这应该可行:

    SELECT DISTINCT PosterID
    FROM table1 x
    WHERE PostingDate BETWEEN '2012-05-01' AND '2012-06-30'
    AND posterID NOT IN (SELECT PosterID
      FROM table1 y
      WHERE PostingDate > '2012-07-01' AND x.CategoryID = y.CategoryID);  
    

    【讨论】:

    • 干净、简单、有效。谢谢!和一个相当新的欢迎!献给社区,维罗妮卡!
    猜你喜欢
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多