Я работаю над кодом, который будет проверять любой номер телефона, который появляется несколько раз в таблице сотрудников. В этом случае разные люди могут иметь один и тот же номер телефона, и я хочу отметить их.
<table style="height: 234px;" width="735">
<tbody>
<tr>
<td style="width: 114px;"><span style="text-decoration: underline;"><strong>First name</strong></span></td>
<td style="width: 114px;"><span style="text-decoration: underline;"><strong>Last Name</strong></span></td>
<td style="width: 116px;"><span style="text-decoration: underline;"><strong>Main Phone</strong></span></td>
<td style="width: 117px;"><span style="text-decoration: underline;"><strong>Work Phone</strong></span></td>
<td style="width: 117px;"><span style="text-decoration: underline;"><strong>Mobile 1</strong></span></td>
<td style="width: 117px;"><span style="text-decoration: underline;"><strong>Mobile 2</strong></span></td>
</tr>
<tr>
<td style="width: 114px;">Jon</td>
<td style="width: 114px;">Smith</td>
<td style="width: 116px;">77777777</td>
<td style="width: 117px;">50505050</td>
<td style="width: 117px;"> </td>
<td style="width: 117px;"> </td>
</tr>
<tr>
<td style="width: 114px;">J </td>
<td style="width: 114px;">Smith</td>
<td style="width: 116px;"> </td>
<td style="width: 117px;"> </td>
<td style="width: 117px;"> </td>
<td style="width: 117px;"> </td>
</tr>
<tr>
<td style="width: 114px;">John </td>
<td style="width: 114px;">Smith</td>
<td style="width: 116px;">50505050</td>
<td style="width: 117px;"> </td>
<td style="width: 117px;"> </td>
<td style="width: 117px;"> </td>
</tr>
<tr>
<td style="width: 114px;">J Smith</td>
<td style="width: 114px;"> </td>
<td style="width: 116px;"> </td>
<td style="width: 117px;">77777777</td>
<td style="width: 117px;"> </td>
<td style="width: 117px;">50505050</td>
</tr>
<tr>
<td style="width: 114px;">Jane</td>
<td style="width: 114px;">Smith</td>
<td style="width: 116px;"> </td>
<td style="width: 117px;"> </td>
<td style="width: 117px;"> </td>
<td style="width: 117px;">77777777</td>
</tr>
<tr>
<td style="width: 114px;">J</td>
<td style="width: 114px;">Doe</td>
<td style="width: 116px;">65656565</td>
<td style="width: 117px;"> </td>
<td style="width: 117px;"> </td>
<td style="width: 117px;">33333333</td>
</tr>
<tr>
<td style="width: 114px;">Jessica</td>
<td style="width: 114px;">Doe</td>
<td style="width: 116px;"> </td>
<td style="width: 117px;">33333333</td>
<td style="width: 117px;">65656565</td>
<td style="width: 117px;"> </td>
</tr>
</tbody>
</table>
Я попытался найти любое число, дважды повторяющееся с использованием приведенного ниже кода, и проконсультируйтесь с вами.
Select firstname, lastname, mainPhone, count(mainPhone), workPhone,count(businessPhone), mobile1Phone, count(mobilePhone) , mobile2Phone, count(mobile2Phone)
from employeeTable
group by mainPhone, businessPhone, mobile1Phone, mobile2Phone
having
(count(mainPhone) > 1) or (count(businessPhone) > 1) or (count(mobile2Phone) > 1) or (count(mobile2Phone) > 1);
Вы могли бы попробовать что-то подобное.
SELECT
phone,
GROUP_CONCAT('uniqueKey') AS 'uniqueKeys',
COUNT(*)
FROM
(
SELECT
id AS 'uniqueKey',
'mainPhone' AS source,
mainPhone AS 'phone'
FROM
employeeTable
UNION
SELECT
id AS 'uniqueKey',
'businessPhone' AS source,
businessPhone AS 'phone'
FROM
employeeTable
UNION
SELECT
id AS 'uniqueKey',
'mobile1Phone' AS source,
mobile1Phone AS 'phone'
FROM
employeeTable
UNION
SELECT
id AS 'uniqueKey',
'mobile2Phone' AS source,
mobile2Phone AS 'phone'
FROM
employeeTable
) AS subquery1
GROUP BY phone
Сначала с различными утверждениями, связанными с UNION
вы создаете нечто вроде вида транспондера. Это можно сгруппировать и подсчитать. Я предположил, что существует какой-то уникальный или первичный ключ, такой как идентификатор или логин или аналогичный.
SELECT DISINCT * FROM (...) AS subquery1
а вокруг этого оператора - GROUP BY
. Я не думаю, что это очень хороший подход. Если ваша таблица станет больше, два параллельных подзапроса окажут влияние, которое ухудшается с учетом количества записей.