需要帮助构建多个数据库的“复杂”MySQL查询

时间:2012-09-11 21:15:48

标签: mysql join subquery

我正在尝试在没有匹配列的表上运行两个MySQL查询。只有当一列的一部分与另一个数据库中的列匹配时,才需要匹配这两个查询的结果并显示信息。以下是我到目前为止的情况:

select data2, time_id from db.table1
where data2 in
(select right(dst,10) from db2.table2
where calldate like '2012-09-01%' and lastdata like <blocked for privacy>)
having (time_id between '1346475600' and '1346562000');

根据我的理解,应该首先调用第3-4行的子查询,对吗?我对这个陈述的问题是它总是超时。这只需要太长时间。我格式化错了吗?我确信另一种方法是使用join语句,在这方面的任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

你没有错误地格式化它,它只是一个非常糟糕的查询,需要服务器做一些荒谬的计算。让我们采取一些措施来做正确的事,真的只是一件大事,一件是未成年人。

  1. 不要尝试加入部分字段。向table2添加一列,其中包含要加入的数据。运行查询以填充该字段。添加触发器以使该字段保持最新。不允许提醒架构?创建一个临时表并相应地填充它并加入到该表中。
  2. 请勿在日期时间字段中使用类似内容,请改为call date BETWEEN <datetime 1> AND <datetime 2>