gpt4 book ai didi

mysql - 我需要比较两行数据是否重复

转载 作者:行者123 更新时间:2023-11-30 00:55:13 25 4
gpt4 key购买 nike

我需要比较两行数据是否重复,如果连续行是相同的activityID,我需要指出其中一个是错误的。此代码无法按我的意愿工作

This should throw an error

我的代码未正确测试。

SELECT
CASE
WHEN activityId = activityId +1 THEN activityId = 'error'
ELSE activityId = activityId
END AS sortOrder,recordId,
activityId,
started,
completed,
userId

FROM log1644

最佳答案

您无法像这样访问下一行或上一行。确切地说,实际上并不存在下一行或上一行,这意味着在数据库中,当您不指定数据时,数据没有特定的顺序。只要您的查询中没有 ORDER BY one_or_multiple_columns,您每次发出查询时返回的结果就可能会以另一种顺序显示。
也就是说,你有两种可能性:

  • 将表连接到自身
  • 使用变量

将表连接到自身会像这样工作

SELECT * FROM table alias_a 
INNER JOIN table alias_b ON a.id = b.id + 1

然后 CASE WHEN a.whatever = b.whatever THEN 'error' ELSE 'cool' END 就可以了,但这很快就会变得难看,例如当下一个 id 不是 +1 但有时 +2 因为您有时删除了一行或其他原因。或者从性能角度来说这可能很糟糕,无论如何......

我更喜欢在这种情况下使用变量。

SELECT
yt.*,
CASE WHEN @prevID = id THEN 'oops, same id as row before' ELSE 'another_id' END AS is_it_different,
@prevID := id
FROM your_table yt,
(SELECT @prevID := 0) table_alias__variable_initialization
ORDER BY id, another_column_determining_the_order_of_ids

如前所述,ORDER BY 在这里很重要。
CASE WHEN ... 中,变量 @prevID 仍然具有上一行的值。在语句的下一行中,当前行的值被分配给变量。

关于mysql - 我需要比较两行数据是否重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20631326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com