列出两个表之间的前10个结果

时间:2016-11-17 22:15:49

标签: mysql join

我目前在尝试列出两个表之间的前10行时遇到问题。表1包含列(name,gold,id),表2包含列(name,gold,id)。

如何列出两个表之间的前10金并防止列出重复的行?

两个表都有几乎相同的数据。一段时间后,一个表更新另一个表,有点像备份表。但有时table2的数据可能与table1的数据不同,直到更新发生。

假设table1有像......

这样的行
 (Josh, 500, 1),
 (Bob, 600, 2),
 (Jim, 687, 3),
 (John, 777, 4),
 (Jack, 888, 5)

和table2有像......

这样的行
 (Josh, 488, 1),
 (sue, 1000, 6),
 (Joe, 6882, 7),
 (John2, 77, 8),
 (Jay, 874, 9)

如何在不显示重复行的情况下列出两个表之间的前10金?我希望table2的数据优先于table1。我目前正在使用这种方法...

SELECT table1.gold AS mysum, table2.gold AS mysum2 
FROM table1 
LEFT JOIN table2 ON table2.id=table1.id 
ORDER BY mysum DESC 
LIMIT 0, 10

然后我只是检查此查询的结果并使用mysum或mysum2,具体取决于是否设置了mysum2。

这并不像我想要的那样完全正常工作,因为如果设置了mysum2,它仍将被列为table1的前10个结果,并且在列表中的位置不正确。

1 个答案:

答案 0 :(得分:0)

使用IFNULL

SELECT t.g FROM
(
  SELECT IFNULL(table2.gold, table1.gold) AS g
  FROM table1 
  LEFT JOIN table2 ON table2.id=table1.id 
) t
ORDER BY t.g DESC 
LIMIT 0, 10