【问题标题】:Select difference between two row using one table使用一张表选择两行之间的差异
【发布时间】:2016-08-05 05:48:00
【问题描述】:

我有table-A,我想从2016-06-252016-06-26 中选择日期范围来查找名称的差异。

根据图片,结果应该是这样的:

2016-06-26  joe     40

我猜查询是这样的:

SELECT * FROM `2g`
WHERE  'Date' between '2016-06-25' AND 'Date'   '2016-06-26'  
and (`name` != `name`)

【问题讨论】:

  • 说真的???这个 where 子句 and ( name != name ) 永远不会返回任何东西......永远!
  • name!=name 如何以任何方式为真?
  • 你可以比较一下(age != age)

标签: mysql sql sql-server database


【解决方案1】:

请使用 My SQL 查询希望这对你有用。

with x as   (select  *,k = COUNT(*)
            over(PARTITION BY Name,Age )
            from 2g)

select [Date]
      ,[Name]
      ,[Age] from x
where k <= 1 and Date between '2016-06-25' AND '2016-06-26' 

【讨论】:

  • 我有几个一个月的数据,如果年龄不同,我必须指定日期,'Date' 介于 ('2016-06-25' AND '2016-06-26') 之间我想知道。
  • 请查看我更新的答案。希望对您有所帮助
【解决方案2】:

此 where 子句 and ( name != name ) 永远不会返回任何内容,因为 name 将始终等于 name。你应该这样做:

SELECT * FROM 2g WHERE 'Date' between ('2016-06-25' AND '2016-06-26')  
AND count(name) = 1  
GROUP BY name

【讨论】:

  • 我的年龄不同,年龄有独特的价值。如果两个日期之间的年龄不同。然后拿出来。
  • 在 where 子句中添加这个 AND count(Age) = 1
【解决方案3】:

请检查这个。我不知道这种语法是否适用于 mysql。

SELECT name FROM 2g
WHERE  'Date' between '2016-06-25' AND '2016-06-26'  
Group by Name 
Having count(Name) > 1

【讨论】:

  • 感谢您的重播,如果我想比较 '2016-06-25' 和 'Date' '2016-06-26' 之间的年龄怎么办。如果两组之间有不同的年龄,请整理出来。 SELECT * FROM 2g WHERE 'Date' between '2016-06-26' AND 'Date' '2016-06-26' Group by 'age' 有 ('age') != ('age')
  • 两组的含义是什么,你需要的输出是什么。
  • 我想知道有一个新记录,看图片,(第 1 组):在日期 25 中有 3 个值,年龄 20、23、20。 (第 2 组),有 20, 23, 20,40 。我希望查询选择日期并比较年龄 >>> 找到 40
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-18
  • 1970-01-01
  • 1970-01-01
  • 2020-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多