2017-04-25 64 views
0

插入標題到一個表,如果它是一個重複的,我需要一些IT,如 標題 標題2 標題3等 我想我可以通過獲得的長度,然後做類似MySQL的使用LEFT或SUBSTRING在WHERE子句遞增重複值

"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

聽起來像業務邏輯,不應該在數據庫層 – Jens

+0

另一種選擇是刪除標題的唯一選項。如果標題可以重複,那麼允許並找到其他區分方式。 –

+0

我不得不重組太多的事情來做到這一點。這是一種表單,具有歷史記錄功能,可以拖動之前的條目,用作模板,或者部分填寫並在稍後返回。很多是基於用戶給記錄的標題。該表單有驗證。那裏沒問題。另一方面,API需要處理它。 – RationalRabbit

回答

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

「定位」好!我將不得不做一些這方面的實驗,並回到你身邊。 – RationalRabbit

+0

無法讓這個工作 - 也許部分做我的誤解。無論如何,如你所見,我找到了一個更簡單的解決方案。當你想使用某個功能時,「擁有」非常棒。但它必須伴隨着「分組」 – RationalRabbit

+0

我錯了。這不是一個解決方案,我仍在尋找。 – RationalRabbit

0

比方說標題是,你要搜索的表的稱號。 通過使用查詢"SELECT count fieldname FROM tablename fieldname = 'title',您可以獲得標題爲標題的記錄數。 如果計數爲0,則按通常方式插入,否則將計數加1並將其附加到標題,然後插入它。

+0

這並不能解決問題,因爲「標題2」不會匹配「標題」 – RationalRabbit