我有一个如下表,我正在尝试合并阻止用户和按列阻止并删除相交值并创建唯一数字列表,但实际上我无法获得特定用户阻止列表。
|------------------------------------------------------
|block_id | block_user | block_by | block_at
|------------------------------------------------------
| 1 | 22 | 1 | 1434451573
| 7 | 59 | 1 | 1434695298
| 10 | 4 | 1 | 1434695327
| 11 | 1 | 14 | 1434695349
我需要如下的东西,它需要通过id为1来查询;
|-----------
|block_list
|-----------
| 4
| 14
| 22
| 59
我正在尝试以下 SQL,但实际上我未能获得所需的结果;
SELECT block_user AS blocked_user FROM block_list
UNION
SELECT block_by AS blocked_list FROM block_list
WHERE (block_user = '1' OR block_by = '1')
最佳答案
如果 1 总是被排除在外,你可以简单地使用这个:
SELECT *
FROM (
SELECT block_user as id
FROM yourTable
UNION
SELECT block_by as id
FROM yourTable
) as dat
WHERE dat.id <> 1
如果您的逻辑需要,也许您想将 WHERE block_user = 1
添加到子查询。这不是很清楚。
关于MySQL:从两个单独的ID列表查询并制作一个统一列表,没有重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30934050/