【发布时间】:2015-10-09 23:52:56
【问题描述】:
我知道这是一个非常愚蠢的问题,相信我我尝试了一切。这是我最后的选择。
我正在尝试运行子查询。令人惊讶的是 mysql 挂起(即使它不是一个大查询)。
我正在尝试运行此查询以返回 Link_id 列表
select distinct link_id from join_link_object where obj_id = (select group_concat(obj_id) from xalt_object where module_name like '%intel-compilers/2016.0.047%');
+---------+
| link_id |
+---------+
| 153249 |
+---------+
返回的结果不正确。而不是返回 link_id 查询的列表只返回第一个。
我知道使用= 不是一个好主意,我尝试使用IN 但提示只是挂起并且什么也不返回。
虽然单独运行子查询然后运行主查询及其结果会给出正确的结果(手动验证)。
mysql> select group_concat(obj_id) from xalt_object where module_name like '%intel-compilers/2016.0.047%';
+-------------------------------------------+
| group_concat(obj_id) |
+-------------------------------------------+
| 352304,352305,352306,352307,352308,354813 |
+-------------------------------------------+
然后运行主查询 -
mysql> select distinct link_id from join_link_object where obj_id in (352304,352305,352306,352307,352308,354813);
+---------+
| link_id |
+---------+
| 153249 |
| 153467 |
| 153996 |
| 154170 |
| 155077 |
| 155099 |
| 155100 |
+---------+
我什至尝试使用 EXISTS,但这些查询返回荒谬的结果(大约 156995 行)-
select distinct link_id from join_link_object where EXISTS (select obj_id from xalt_object where module_name like '%intel-compilers/2016.0.047%');
请指教!谢谢
【问题讨论】:
-
在第一个查询中使用
where obj_id =在倒数第二个查询中使用where obj_id in尝试在第一个查询中使用in
标签: mysql