是否可以加入这些表格:
日志表:
+--------+---------------+------------+
| name | ip | created |
+--------+---------------+------------+
| 408901 | 178.22.51.168 | 1390887682 |
| 408901 | 178.22.51.168 | 1390927059 |
| 408901 | 178.22.51.168 | 1390957854 |
+--------+---------------+------------+
订单表:
+---------+------------+
| id | created |
+---------+------------+
| 8563863 | 1390887692 |
| 8563865 | 1390897682 |
| 8563859 | 1390917059 |
| 8563860 | 1390937059 |
| 8563879 | 1390947854 |
+---------+------------+
结果表将是:
+---------+--------------+---------+---------------+------------+
|orders.id|orders.created|logs.name| logs.ip |logs.created|
+---------+--------------+---------+---------------+------------+
| 8563863 | 1390887692 | 408901 | 178.22.51.168 | 1390887682 |
| 8563865 | 1390897682 | 408901 | 178.22.51.168 | 1390887682 |
| 8563859 | 1390917059 | 408901 | 178.22.51.168 | 1390887682 |
| 8563860 | 1390937059 | 408901 | 178.22.51.168 | 1390927059 |
| 8563879 | 1390947854 | 408901 | 178.22.51.168 | 1390927059 |
+---------+--------------+---------+---------------+------------+
有可能吗? Espessialy,如果第一个表是某些查询的结果。
更新
抱歉这个错误。我想在日志中找到订单。因此,订单表与创建字段的日志表相关,即
第一行有条件(orders.created> = log.created)
答案 0 :(得分:1)
没有什么可以将这两个绑定在一起。 两个表中都没有ID或其他列。
如果是这种情况,您可以在存储过程中加入这两个表。 在您询问第一个查询时,将数据存储在新创建的表中,在连接中使用它以获取结果并在之后将其删除。
亲切的问候
答案 1 :(得分:1)
这会导致非等级连接,表现糟糕:
SELECT *
FROM t2 JOIN t1
ON t1.created =
(
SELECT MAX(t1.created)
FROM t1 WHERE t1.created <= t2.created
)
你可能最好使用基于这样的UNION的游标(你可能需要添加一些类型转换以获得工作的UNION):
SELECT *
FROM
(
SELECT NULL AS name, NULL AS ip, NULL AS created2, t2.*
FROM t2
UNION ALL
SELECT t1.*, NULL AS id, NULL AS created
FROM t1
) AS dt
ORDER BY COALESCE(created, created2)
现在,您可以按正确的顺序处理行,并记住最后一行t1行中的行。
答案 2 :(得分:-1)
只需使用 union
即可select id, created from table_2
union all
select name, ip, created from table_1