Mysql 尽早结案
我一直在用这个代码度过一段糟糕的时光。我想知道如果CC_列表已经包含匹配的值,是否有人可以查看并告诉我如何中断case语句。它不断连接,我希望它检查一个电子邮件地址映射加入,然后打破,如果电子邮件地址存在。下面是我的代码:Mysql 尽早结案,mysql,case,where,Mysql,Case,Where,我一直在用这个代码度过一段糟糕的时光。我想知道如果CC_列表已经包含匹配的值,是否有人可以查看并告诉我如何中断case语句。它不断连接,我希望它检查一个电子邮件地址映射加入,然后打破,如果电子邮件地址存在。下面是我的代码: UPDATE HD_TICKET JOIN USER ON USER.FULL_NAME = CUSTOM_FIELD_VALUE11 SET HD_TICKET.CC_LIST = CASE WHEN HD_TICKET.CC_LIST = '' OR HD_TICK
UPDATE HD_TICKET
JOIN USER ON USER.FULL_NAME = CUSTOM_FIELD_VALUE11
SET HD_TICKET.CC_LIST =
CASE WHEN HD_TICKET.CC_LIST = '' OR HD_TICKET.CC_LIST IS NULL THEN USER.EMAIL
ELSE CONCAT(HD_TICKET.CC_LIST, ", ", USER.EMAIL)
END
where HD_TICKET.HD_QUEUE_ID = 12
我的建议是您创建一个过程或函数来实现这一点 因为使用该功能,您可以选择所有用户,然后创建列表。用于测试该值是否已在列表中。在这种情况下,将列设置为自身
UPDATE HD_TICKET
JOIN USER ON USER.FULL_NAME = CUSTOM_FIELD_VALUE11
SET HD_TICKET.CC_LIST =
CASE WHEN HD_TICKET.CC_LIST = '' OR HD_TICKET.CC_LIST IS NULL THEN USER.EMAIL
WHEN FIND_IN_SET(USER.EMAIL, REPLACE(HD_TICKET.CC_LIST, ' ', '')) THEN HD_TICKET.CC_LIST
ELSE CONCAT(HD_TICKET.CC_LIST, ",", USER.EMAIL)
END
where HD_TICKET.HD_QUEUE_ID = 12
这样的问题就是为什么不应该在数据库列中放置逗号分隔的列表。与值位于单独行中的表联接。这是字段所需的格式。这是一个电子邮件地址列表。这仍然允许它一次又一次地附加同一封电子邮件。不,它没有<如果电子邮件已在列表中,则“代码>在集合中查找”为真。在这种情况下,它不会追加地址。不要在逗号后加空格,我认为
FIND_In_SET
不会在匹配之前修剪空格。如果在匹配之前的字段中有内容,它可以追加地址。如果字段是空的,那么它工作得很好。但它似乎没有在字符串值下搜索足够远的距离来获得一个值?更新USER.FULL_NAME=自定义_字段_值11设置HD_TICKET.CC_LIST=当HD_TICKET.CC_LIST=''或HD_TICKET.CC_LIST为空时的大小写USER.EMAIL在_集中查找_(USER.EMAIL,HD_TICKET.CC_LIST),然后设置HD_TICKET.CC_LIST ELSE CONCAT(HD_TICKET.CC_LIST,“,”,USER.EMAIL)在HD_TICKET.HD_QUEUE_ID=12处结束不要在注释中放入长代码,没有格式。如果您想显示您正在尝试的内容,请将其添加为问题的更新。