CREATE TABLE bar LIKE foo;
INSERT INTO bar (id,user,first,last)
(SELECT f.id,CONCAT(SUBSTRING(f.first,1,1),f.last,
(SELECT COUNT(*) FROM foo f2
WHERE SUBSTRING(f2.first,1,1) = SUBSTRING(f.first,1,1)
AND f2.last = f.last AND f2.id <= f.id
)),f.first,f.last from foo f);
DROP TABLE foo;
RENAME TABLE bar TO foo;
यह एक प्राथमिक कुंजी id
पर निर्भर करता है इसलिए के लिए प्रत्येक रिकॉर्ड bar
में डाला, हम केवल id
bar.id
से भी कम समय के साथ foo
में पाया डुप्लिकेट गिनती।
को देखते हुए foo:
select * from foo;
+----+------+--------+--------+
| id | user | first | last |
+----+------+--------+--------+
| 1 | aaa | Roger | Hill |
| 2 | bbb | Sally | Road |
| 3 | ccc | Fred | Mount |
| 4 | ddd | Darren | Meadow |
| 5 | eee | Sharon | Road |
+----+------+--------+--------+
ऊपर INSERT
bar
में है, जिसका परिणाम:
select * from bar;
+----+----------+--------+--------+
| id | user | first | last |
+----+----------+--------+--------+
| 1 | RHill1 | Roger | Hill |
| 2 | SRoad1 | Sally | Road |
| 3 | FMount1 | Fred | Mount |
| 4 | DMeadow1 | Darren | Meadow |
| 5 | SRoad2 | Sharon | Road |
+----+----------+--------+--------+
"1" उपयोगकर्ता नाम के अंत से,
निकालने के लिए
INSERT INTO bar (id,user,first,last)
(SELECT f3.id,
CONCAT(
SUBSTRING(f3.first,1,1),
f3.last,
CASE f3.cnt WHEN 1 THEN '' ELSE f3.cnt END),
f3.first,
f3.last
FROM (
SELECT
f.id,
f.first,
f.last,
(
SELECT COUNT(*)
FROM foo f2
WHERE SUBSTRING(f2.first,1,1) = SUBSTRING(f.first,1,1)
AND f2.last = f.last AND f2.id <= f.id
) as cnt
FROM foo f) f3)
बार क्या है? अंत में ट्रिपल उद्धरण क्यों हैं? इसे थोड़ा सा समझाने की परवाह है? – mpen
@ मार्क: 'बार' 'foo' जैसी खाली तालिका है। 'बार' में रिकॉर्ड्स डालने के बाद, आप 'foo' को छोड़ सकते हैं और 'bar' ->' foo' का नाम बदल सकते हैं। ट्रिपल उद्धरण पायथन का एक आर्टिफैक्ट था, जहां मैंने कोड का परीक्षण किया था। – unutbu
आह। मैं सिर्फ उपयोगकर्ता तालिका को अपडेट करना चाहता था, लेकिन मुझे लगता है कि मैं इसे आसानी से वापस स्थानांतरित कर सकता हूं। यह बहुत मजेदार है। अगर यह "1" है तो मैं संख्या को भी छोड़ दूंगा, लेकिन फिर से, यह करना आसान होना चाहिए। अच्छा! आपका बहुत बहुत धन्यवाद! ** संपादित करें: ** आपकी टिप्पणी की तरह बताते हैं। – mpen