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 |
+---------+-----------+-----------+-----------+
Итак, у меня есть таблица выше как userinfo
. По какой-то причине мне нужно найти повторяющиеся записи для party1_id и party2_id.
Я пробовал ниже:
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
Но это не дало результата так, как я хотел, а просто вернуло 3 записи. Есть ли способ заархивировать мой ожидаемый результат с сортировкой так же, как и в моем ожидаемом выходе.
Ожидаемый результат:
+---------+-----------+-----------+-----------+
| 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 |
+---------+-----------+-----------+-----------+