MySQL UNION 返回不存在的 id

标签 mysql

我有一个表t,有 900 个 id,1-900。为了完成我的任务,我需要做类似的事情(我认为尝试推理这种类型的查询是没有意义的,因为这是我正在尝试的事情): id 不是唯一的(因为它有点像外键)!

SELECT DISTINCT(t5.id) FROM (
SELECT DISTINCT(t1.id) FROM t t1 WHERE {...} 
    UNION SELECT DISTINCT(t2.id) FROM (
         SELECT DISTINCT(t0.id) FROM t t0 WHERE {...}) as t2 
         INNER JOIN t t3 ON t2.id=t3.id WHERE{...} 
    UNION SELECT DISTINCT(t3.id) FROM t t4 WHERE {...}) 
t5 ORDER BY t5.id

问题是查询返回的 ID 与 900 个现有 ID 相差甚远。他们一直到超过 10.000-20.000。请帮助我向您提供所需的所有必要信息。

最佳答案

我不确定,但也许您需要在第二个选择字段中添加as id,如下所示:

SELECT DISTINCT(id) FROM ( SELECT DISTINCT(t1.id) **as id** FROM t t1 WHERE {...} UNION SELECT DISTINCT(t2.id) FROM t t2 WHERE {...} INNER JOIN t t3 ON t2.id=t3.id WHERE{...} UNION SELECT DISTINCT(t3.id) FROM t t4 WHERE {...}) t5 ORDER BY t5.id

关于MySQL UNION 返回不存在的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40131590/

相关文章:

php - 如何在 Sphinx 的一个索引中使用多个来源?

mysql - 如何在 MySQL 中将键/值样式表转换为普通表

Mysql从不同的表中选择ID

mysql - 按时间排序和分组

javascript - 如何使用 php 和 mysql 验证单选按钮?

mysql - SQL - 配对电影流派

php - 插入多对多数据库和取消背后的逻辑

PHP MySQL 菜单排序

mysql - 从另一个表更新多个 MySQL 行

mysql - Php 随机化的概率为 %