我有一些具有相似字段但不完全相同的表。
他们拥有的相同字段是描述(文本字段)和修改(unixtime)
我想根据 unixtime 从这些表中选择最后修改的项目。我不能使用 UNION 因为表不一样并且多表选择超时。
我一直在寻找这个但没有运气,要么人们正在使用 JOINS 要么 SELECT A. , B. FROM table A, table B
它们有多大不同?也许你可以得到公共领域:
select t1.name1 as name from table1
union
select t2.name2 as name from table2
试试这个:
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
但是,这与只执行两个查询几乎相同(只是更复杂),所以我不推荐它。
如果您选择时间,请尝试在“已修改”上添加 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