1

我有一些具有相似字段但不完全相同的表。

他们拥有的相同字段是描述(文本字段)和修改(unixtime)

我想根据 unixtime 从这些表中选择最后修改的项目。我不能使用 UNION 因为表不一样并且多表选择超时。

我一直在寻找这个但没有运气,要么人们正在使用 JOINS 要么 SELECT A. , B. FROM table A, table B

4

3 回答 3

4

它们有多大不同?也许你可以得到公共领域:

select t1.name1 as name from table1
union
select t2.name2 as name from table2
于 2009-01-13T11:46:58.990 回答
0

试试这个:

SELECT
    IF (A.modified > B.modified, A.modified, B.modified) AS modified,
    IF (A.modified > B.modified, A.description, B.description) AS description,
FROM
    (SELECT description, modified FROM A ORDER BY modified DESC LIMIT 1) AS A,
    (SELECT description, modified FROM B ORDER BY modified DESC LIMIT 1) AS B
LIMIT 1

但是,这与只执行两个查询几乎相同(只是更复杂),所以我不推荐它。

于 2009-01-13T11:47:09.130 回答
0

如果您选择时间,请尝试在“已修改”上添加 desc 索引,并使用 select 限制仅返回一个(最后)行。

那么你就可以:

SELECT 
    A,B,C,D, desc, modified 
FROM 
   TABLEA
UNION ALL 
SELECT 
    CAST(E as <A type>), CAST(F AS <B type>) ..., desc, modified   
FROM 
   TABLE B  
于 2009-01-13T11:53:59.910 回答