我已经搜索过高低,也许我找到了答案,但是我无法实现它,所以如果你能提供帮助那就太好了。
我的数据库表中有两列:
USERID | FRIENDID
-------+----------
887 | 553
54 | 887
23 | 887
我需要获取说USERID = 887
的数据。
这是我的疑问:
SELECT
`userid`, `friend_id`
FROM
friends
WHERE
userid = 887 or FRIENDID = 887
现在这正在按照我的预期返回数据,但是我需要像这样显示数据:
IDS
------
887
553
887
887
54
23
因此,两列数据都被推入一个,如果可能,请删除重复的ID 887
答案 0 :(得分:2)
(select userid as id from friends where userid = XXX)
union
(select friend_id as id from friends where friend_id = XXX)
说明:使用union
来合并userid
和friend_id
的两个查询的结果。 使用。 distinct
删除重复项。UNION
已经对结果集做了明确的分析。
答案 1 :(得分:0)
我创建了一个测试表,并添加了一些额外的值,以确保它只返回您想要的值。
您需要做的就是使用union来获取不同的值。在第一个选择中,您将获得UserID,在第二个选择中,您将获得FriendID。在两者中使用相同的WHERE子句,以便获得所需的所有值。
CREATE TABLE #Friends (UserID INT, FriendID INT)
INSERT INTO #Friends
VALUES (887,553),(54,887),(23,887),(74,66),(89,49)
SELECT * FROM #Friends
SELECT IDs = UserID
FROM #Friends
WHERE UserID = 887 OR FriendID = 887
UNION
SELECT IDs = FriendID
FROM #Friends
WHERE UserID = 887 OR FriendID = 887
答案 2 :(得分:0)
其他示例不会返回您想要的内容,一个不同ID的列表
with cte as (
SELECT
userid id
FROM
friends
WHERE
userid = 887 or FRIENDID = 887
UNION
SELECT
FRIENDID
FROM
friends
WHERE
userid = 887 or FRIENDID = 887
) SELECT DISTINCT id From cte