MySQL:从两个单独的ID列表查询并制作一个统一列表,没有重复值

标签 mysql sql

我有一个如下表,我正在尝试合并阻止用户和按列阻止并删除相交值并创建唯一数字列表,但实际上我无法获得特定用户阻止列表。

|------------------------------------------------------
|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/

相关文章:

mysql:获取带有版本的产品表的每日平均价格

php - 为什么分页不显示数据?

sql - 如何截断 MySQL 数据库中的所有表?

sql - 如何使用SQL比较两个日期值

sql - 寻找一种更快的方法来更新 SQL 表上的许多列

html - 带文字的居中图像

php - 当 php 代码没有达到 release-mysql-lock 阶段时会发生什么?

mysql - puppet 覆盖绑定(bind)地址 mysql 变量

SQL 多次更新与单次更新性能

sql - 选择受更新影响的行