为什么这个查询返回更多的值,然后它应该

时间:2019-03-09 00:20:56

标签: postgresql

SELECT username, user_status
FROM users
JOIN relationships ON users.user_id = relationships.user_two_id
WHERE relationships.user_one_id = $1
   OR relationships.user_two_id = $1
  AND relationships.relationship_status = 1

上述查询;我想做的是使用用户ID  根据用户为好友时显示的“ 1”,验证用户是否为好友。

预期:
返回用户身份(如果他们是朋友)

实际:
返回我要为其执行查询的用户的多余重复项-因此,如果我的用户名是bob,并且执行了此查询,则我什至多次看到bob,而我什至都不愿见到他。

示例表格:

CREATE TABLE users (
user_id bigserial UNIQUE PRIMARY KEY,
email VARCHAR(30) UNIQUE,
password VARCHAR(70),
username VARCHAR(30)UNIQUE,
dob  INTEGER,
country VARCHAR(30),
province VARCHAR(30),
city VARCHAR(30),
date TIMESTAMP
);

CREATE TABLE relationships(
record bigserial UNIQUE PRIMARY KEY,
user_one_id bigserial REFERENCES users(user_id),
user_two_id bigserial REFERENCES users(user_id),
relationship_status INTEGER,
date TIMESTAMP WITH TIME zone
);

1 个答案:

答案 0 :(得分:0)

运行时只有一个内衬,非常内在; SELECT DISTINCT用户名,user_status ....