我有这张桌子:
我想选择最后两个条目(两个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 ";
我收到“无效查询”错误。这有什么不对?
答案 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