SQL加入两个查询,同一个表

时间:2011-03-21 13:04:38

标签: mysql sql

我有这张桌子:

enter image description here

我想选择最后两个条目(两个id最大的条目),无论如何, 以及两个查询连接在一起的“权力”最多的4个条目。

所以在这个例子中我只有4个结果,id 9& 8,3& 4.

我试过了:

$query = "SELECT * FROM table 
          ORDER BY power DESC LIMIT 4 
          INNER JOIN SELECT * FROM table 
                     ORDER BY id DESC LIMIT 2 ";

我收到“无效查询”错误。这有什么不对?

3 个答案:

答案 0 :(得分:3)

( SELECT * FROM table ORDER BY power DESC LIMIT 4 )
UNION
( SELECT * FROM table ORDER BY id DESC LIMIT 2 )

答案 1 :(得分:3)

JOIN不是您想要的,但UNION会返回两行(当匹配两个查询时)。我手头没有MySQL,但尝试子查询:

SELECT * FROM table 
WHERE id IN (SELECT id FROM table ORDER BY id DESC LIMIT 2)
OR id IN (SELECT id FROM table ORDER BY power DESC LIMIT 4)

答案 2 :(得分:0)

你要做的是UNION而不是INNER JOIN

示例:

SELECT column_name(s) FROM table_name1  
UNION  
SELECT column_name(s) FROM table_name2

Union将两个select语句的结果一起追加。我建议阅读Jeff Atwood关于SQL连接的帖子,以便更好地了解各种连接的作用。 http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html