MySQL с использованием LEFT или SUBSTRING в предложении WHERE для увеличения дублирующихся значений

Вставка заголовка в таблицу, если он дубликат, мне нужно нумеровать его, например:
заглавие
Название 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 не будет ничего, что не имеет партнера?

Во всяком случае, это не решение проблемы.

0

Решение

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

Другие решения

Скажем заглавие название, которое вы ищете в таблице.
Вы можете получить количество записей, имеющих название заглавие используя запрос "SELECT count fieldname FROM tablename fieldname = 'title',
Если число равно 0, тогда вставьте его обычным способом, иначе увеличьте число на 1 и добавьте его к заглавие а затем вставьте его.

0

По вопросам рекламы [email protected]