有很多关于在mysql查询中选择唯一值的问题/答案,但是我没有看到任何关于创建唯一值标志的问题/答案。
我有一个客户id,它可以在查询输出中出现多次。我想创建一个新列来标记customer\u id是否唯一(0或1)。
输出应该如下所示:
ID | Customer ID | Unique_Flag
1 | 1234 | 1
2 | 2345 | 1
3 | 2345 | 0
4 | 5678 | 1
如果有人需要澄清,请告诉我。
3条答案
按热度按时间ht4b089n1#
你可以在下面试试
soat7uwm2#
您似乎想将第一个事件标记为唯一的,而不是其他事件。那么,让我们加入比较值:
对大多数人来说,“唯一”标志意味着总计数是“1”,而不是仅仅是第一次出现。如果这就是你想要的,那么你可以使用类似的逻辑:
在mysql 8+中,您将使用窗口函数:
a8jjtwal3#
您可以使用下面给出的lead函数来获得所需的输出。
SELECT ID, CUSTOMER_ID, CASE WHEN CUSTOMER_ID != CUSTOMER_ID_NEXT THEN 1 ELSE 0 END AS UNIQUE_FLAG FROM (SELECT ID, CUSTOMER_ID,LEAD(CUSTOMER_ID, 1, 0) OVER (ORDER BY CUSTOMER_ID) AS CUSTOMER_ID_NEXT FROM TABLE)T