我有2個表:PostgreSQL - 如何使用WHERE子句執行LEFT OUTER JOIN時刪除重複項?
users table
+--------+---------+
| id | integer |
+--------+---------+
| phone | string |
+--------+---------+
| active | boolean |
+--------+---------+
statuses table
+---------+---------+
| id | integer |
+---------+---------+
| user_id | integer |
+---------+---------+
| step_1 | boolean |
+---------+---------+
| step_2 | boolean |
+---------+---------+
我做LEFT OUTER JOIN
statuses
表上users
表WHERE
條款是這樣的:
SELECT users.id, statuses.step_1, statuses.step_2
FROM users
LEFT OUTER JOIN statuses ON users.id = statuses.user_id
WHERE (users.active='f')
ORDER BY users.id DESC
我的問題
也有一些網友認爲users
表中有相同的電話號碼,我想根據手機刪除重複的用戶數。
我不想從數據庫中刪除它們。但只想排除它們僅適用於此查詢。例如,約翰(身份證號碼:1)和薩拉(身份證號碼:2)共用同一個電話號碼(+ 6012-3456789),刪除其中的一個,約翰或薩拉對我來說都很不錯。
我試過但沒有工作?
第一:
SELECT DISTINCT users.phone
FROM users
LEFT OUTER JOIN statuses ON users.id = statuses.user_id
WHERE (users.active='f')
ORDER BY users.id DESC
二:
SELECT users.phone, COUNT(*)
FROM users
LEFT OUTER JOIN statuses ON users.id = statuses.user_id
WHERE (users.active='f')
GROUP BY phone
HAVING COUNT(users.phone) > 1
你是什麼意思爲「我想刪除其中之一」?你想刪除相關的行表格表? – scaisEdge
@scaisEdge不要刪除,但只是想排除它們。 –
添加一些示例表數據和預期結果。請記住,SELECT DISTINCT適用於整個選定的行。 – jarlh