Mysql SQL连接两个查询,同一个表
我有这张桌子: 我想选择最后两个条目(id最大的两个条目),不管是什么, 以及将两个查询结合在一起的4个具有最大“能力”的条目 所以在这个例子中,我只有4个结果,ID9&8,3&4 我试过:Mysql SQL连接两个查询,同一个表,mysql,sql,Mysql,Sql,我有这张桌子: 我想选择最后两个条目(id最大的两个条目),不管是什么, 以及将两个查询结合在一起的4个具有最大“能力”的条目 所以在这个例子中,我只有4个结果,ID9&8,3&4 我试过: $query = "SELECT * FROM table ORDER BY power DESC LIMIT 4 INNER JOIN SELECT * FROM table ORDER BY id DESC LIM
$query = "SELECT * FROM table
ORDER BY power DESC LIMIT 4
INNER JOIN SELECT * FROM table
ORDER BY id DESC LIMIT 2 ";
我收到“无效查询”错误。这里出了什么问题?您希望做的是联合,而不是内部联合
( SELECT * FROM table ORDER BY power DESC LIMIT 4 )
UNION
( SELECT * FROM table ORDER BY id DESC LIMIT 2 )
例如:
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
Union将两个select语句的结果附加在一起。我建议阅读Jeff Atwood关于SQL连接的文章,以便更好地了解各种连接的作用
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)
你想要一个联盟而不是加入查询我试过bensiu的答案,我得到一个联盟的“无效查询:联盟和订单的用法不正确”我想你希望第一次选择限制2而不是限制4。哦,天哪,我真不敢相信我忘记了联盟!让我回到sql注入方法,谢谢!为了解决这个问题,我将每个SELECT语句都放在括号中,谢谢。对不起,我的错误-尝试做得太快-我刚做了,而你在这个时候为它提供了资金。默认重复行被消除了,这正是我所需要的。谢谢。MySQL默认使用
UNION DISTINCT
,所以它不会产生重复的行,这是我的错^^