Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL连接两个查询,同一个表_Mysql_Sql - Fatal编程技术网

Mysql SQL连接两个查询,同一个表

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

我有这张桌子:

我想选择最后两个条目(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 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
,所以它不会产生重复的行,这是我的错^^