从表格中选择所有行,其中col 1和col 2中的entrie是相同的

时间:2017-02-21 08:06:21

标签: mysql

我有一个表A,其中包含几个带条目的列。第1列是广告系列名称,可以多次出现(在表格中)。第2列是订单日期。第3列是该广告系列成功投放邮件的数量。

现在我要做的是:我想要选择第1列中的条目相同的所有列,并且在列中第2列中的条目是相同的(只有其中一个是不够的)

以下是一个例子:

例如,如果表A包含:

|col1                           ||col2           ||col3|
+--------------------------------+---------------+------
|20161512_NL_Luxus_1_DE         ||2017-01-01     ||15 |
|20161217_LC_YoBirthdayNo_A_CH  ||2016-12-12     ||10 |
|20161512_NL_Luxus_1_DE         ||2017-01-01     ||10 |
|20161512_NL_SDT_4_DE           ||2017-02-11     ||1  |
|20170117_SV_YoBirthdayYes_A_DE ||2017-02-03     ||25 |
|20161512_NL_SDT_4_DE           ||2017-01-29     ||9  |        

我想要一个会选择的查询:

|col1                           ||col2           ||col3|
+--------------------------------+---------------+------
|20161512_NL_Luxus_1_DE         ||2017-01-01     ||15 |
|20161512_NL_Luxus_1_DE         ||2017-01-01     ||10 |

这是我到目前为止所得到的:

SELECT T1.* FROM TableA T1 JOIN 
(
    SELECT col1
    FROM TableA
    GROUP BY col1
    HAVING COUNT(*) >= 2 AND col2=col2
) T2
ON T1.col1 = T2.col1;

- >但这不能正常工作......

1 个答案:

答案 0 :(得分:1)

您还需要GROUP BY日期:

SELECT T1.* 
FROM TableA T1 
JOIN ( SELECT col1 
       FROM TableA 
       GROUP BY col1, col2 
       HAVING COUNT(*) >= 2 ) T2 ON T1.col1 = T2.col1;