MySQL在WHERE子句中使用LEFT或SUBSTRING来增加重复值

时间:2017-04-25 08:25:20

标签: php mysql function group-by having

将标题插入表中,如果它是重复的,我需要对其进行编号,例如 标题 标题2 标题3等 我想我可以通过获取长度来比较新标题和表格中的标题,然后执行类似

的操作
"SELECT field FROM tablename WHERE LEFT(field,".$Length.") = '$NewTitle'"

然后只计算行数并增加以创建新标题并存储它。猜猜那不合法。 似乎找不到简单的解决方案。这些条目来自API,因此如果标题发生冲突,我无法轻易要求用户重命名。

我试过

$NameLength = strlen($DocName);
    SELECT DocName, count(DocName) FROM Pickup GROUP BY DocName HAVING LEFT(DocName,'$NameLength') = '$DocName'";

所以,如果我有三个标题,“标题”; “标题2”; “标题3”,我以为我可以做到

$D = mysql_fetch_array($Result);
$RCount = ($D[count(DocName)]) + 1;
$NewTitle = $DocName.' '.$RCount;

适用于第一次冲突,创建“标题2”,但随后将继续在后续条目中创建“标题2”。

我还没有完全理解这一点。我知道这与小组的清晰度有关,但是如果我有一个“标题”和两个标题2和两个标题3,并且我发送另一个'标题,它将增加到“标题4”,随后的“标题“也将重命名为”标题4“。是否Group By不包含任何没有配偶的东西?

无论如何,它不是解决方案。

2 个答案:

答案 0 :(得分:0)

SELECT MAX(CONVERT((TRIM(SUBSTRING(`field`, LOCATE(' ', `name`) ))),UNSIGNED)) as count FROM `tablename` WHERE `field` LIKE 'Title%'

答案 1 :(得分:0)

假设 title 是您在表格中搜索的标题。 您可以使用查询"SELECT count fieldname FROM tablename fieldname = 'title'获取标题为 title 的记录数。 如果count为0,则按常规方式插入,否则将计数增加1并将其附加到标题然后插入。