Let's move the exact scenario, there's a table with the below data
--------------------------------
ID Name GroupID GroupName
--------------------------------
1 A 2 ?
2 B 3 ?
3 C 3 ?
4 D 3 ?
--------------------------------
I need to update the groupname based on the group ID column?
The output should be,
--------------------------------
ID Name GroupID GroupName
--------------------------------
1 A 2 B
2 B 3 C
3 C 3 C
4 D 3 C
--------------------------------
Here we need to use,
1. Self join option - Joining the table with it's own
2. Update statement with inner join
Below is the query to achieve it,
--- Am creating the table
DROP TABLE VENKAT_TABLE
CREATE TABLE VENKAT_TABLE (ID INT, NAME VARCHAR(100),GROUPID INT, GROUPNAME VARCHAR(100))
-- Inserting needy data
INSERT INTO VENKAT_TABLE(ID,NAME,GROUPID) SELECT 1,'A',2
UNION ALL SELECT 2,'B',2
UNION ALL SELECT 3,'C',3
UNION ALL SELECT 4,'D',3
UNION ALL SELECT 5,'E',4
Self joining the table:
SELECT A.NAME,* FROM VENKAT_TABLE A INNER JOIN VENKAT_TABLE B
ON A.ID = B.GROUPID
update query with Innerjoin / self join:
UPDATE B
SET GROUPNAME = A.NAME
FROM VENKAT_TABLE A INNER JOIN VENKAT_TABLE B ON A.ID = B.GROUPID
SELECT * FROM VENKAT_TABLE

Cheers,
Venkatesan Prabu .J
No comments:
Post a Comment