CREATE TABLE IF NOT EXISTS `userinfo` (
`user_id` int(6) unsigned NOT NULL,
`user_code` varchar(20),
`party1_id` varchar(200),
`party2_id` varchar(200),
PRIMARY KEY (`user_id`)
) DEFAULT CHARSET=utf8;
INSERT INTO `userinfo` (`user_id`, `user_code`, `party1_id`, `party2_id`) VALUES
('1', '05B29E57', '1', ''),
('2', '05B29E58', NULL, '1'),
('3', '05B29E59', '2', ''),
('4', '05B29E60', NULL, '2'),
('5', '05B29E61', '3',''),
('6', '05B29E62', NULL, '3'),
('7', '05B29E63', NULL, '4'),
('8', '05B29E64', NULL, '5'),
('9', '05B29E65', NULL, '6'),
('10', '05B29E66', NULL, '7');
+---------+-----------+-----------+-----------+
| user_id | user_code | party1_id | party2_id |
+---------+-----------+-----------+-----------+
| 1 | 05B29E57 | 1 | |
| 2 | 05B29E58 | NULL | 1 |
| 3 | 05B29E59 | 2 | |
| 4 | 05B29E60 | NULL | 2 |
| 5 | 05B29E61 | 3 | |
| 6 | 05B29E62 | NULL | 3 |
| 7 | 05B29E63 | NULL | 4 |
| 8 | 05B29E64 | NULL | 5 |
| 9 | 05B29E65 | NULL | 6 |
| 10 | 05B29E66 | NULL | 7 |
+---------+-----------+-----------+-----------+
So i have above table as userinfo. Due to some reason i have to find the duplicate records for party1_id & party2_id.
I have tried below:
SELECT
*
FROM userinfo u1
JOIN userinfo u2
ON u1.party1_id = u2.party2_id
WHERE IFNULL(u1.party1_id, 0) > 0
AND IFNULL(u1.party2_id, '') = ''
Fiddle: http://sqlfiddle.com/#!9/725eff/1
But it didn't give result in a way i want, it just returns 3 record. Is there a way to archive my expected output with sorting same as in my expected output.
Expected Output:
+---------+-----------+-----------+-----------+
| user_id | user_code | party1_id | party2_id |
+---------+-----------+-----------+-----------+
| 1 | 05B29E57 | 1 | |
| 2 | 05B29E58 | NULL | 1 |
| 3 | 05B29E59 | 2 | |
| 4 | 05B29E60 | NULL | 2 |
| 5 | 05B29E61 | 3 | |
| 6 | 05B29E62 | NULL | 3 |
+---------+-----------+-----------+-----------+