mysql - 返回在两列中多次出现的 Year-Value

标签 mysql sql

我想选择在两列之间出现不止一次的所有年数。

这是我目前所拥有的:

SELECT YEAR(`Date1`), COUNT(*) as Counter
from (SELECT YEAR(`Date1`)
      from table1 UNION 
      SELECT YEAR(`date2`)
      from table1
     ) as year
GROUP by YEAR(`date1`)
WHERE Counter > 2;

我很感激任何建议!

谢谢。

最佳答案

当您使用 GROUP BY 时,您需要使用 HAVING 而不是 WHERE ,如下所示。

SELECT   Y , 
         COUNT(*) AS Counter 
FROM     ( 
                SELECT DISTINCT YEAR(`Date1`) Y
                FROM   table1 
                UNION ALL 
                SELECT DISTINCT YEAR(`date2`) Y
                FROM   table1) AS YEAR 
GROUP BY Y 
HAVING    COUNT(*) > 2;

注意:您不需要在外部查询中再次输入 YEAR,也可以为每一列输入 DISTINCT,这样您就不会重复对于专栏。

关于mysql - 返回在两列中多次出现的 Year-Value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55204837/

相关文章:

php - 如何在 Codeigniter 的迁移库中创建触发器

MySQL 依次选择和分组行

php - fatal error :调用未定义的方法 PDOStatement::lastInsertId()

sql - 将表复制到两个新表中

SQL:按计数 (*) 分组作为总表行数的百分比

sql - 有没有办法在 HiveQL 中对数组使用 like 运算符?

mysql - 如何将这 3 个不同的查询合并为一个?

php - Laravel 5 [PDOException] SQLSTATE[42000] : Syntax error or access violation:

c# - 使用 C# 将 DateTime 格式转换为 SQL 格式

sql - 主键也是星型模式中的外键。是好是坏?