Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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 选择除最高记录外的所有记录_Mysql_Sql_Select_Join_Mediawiki - Fatal编程技术网

Mysql 选择除最高记录外的所有记录

Mysql 选择除最高记录外的所有记录,mysql,sql,select,join,mediawiki,Mysql,Sql,Select,Join,Mediawiki,我有三张桌子 Page Revision Text +-----------+-------------+ +-----------+-------------+----------+ +-------------+---------+ | page_id | rev_id | | rev _

我有三张桌子

 Page                           Revision                                   Text                       
 +-----------+-------------+    +-----------+-------------+----------+     +-------------+---------+
 | page_id   | rev_id      |    | rev _id   | rev_text_id | page_id  |     | rev_text_id | text    |
 +-----------+-------------+    +-----------+-------------+----------+     +-------------+---------+
 |      1    |     2       |    |      1    |     1       |    1     |     |      1      |     A   |
 +--------------------------    +------------------------------------+     +-----------------------+
 |      2    |     5       |    |      2    |     2       |    1     |     |      2      |     B   |
 +-------------------------+    +------------------------------------+     +-----------------------+
                                |      3    |     3       |    2     |     |      3      |     C   |
                                +------------------------------------+     +-----------------------+
                                |      4    |     4       |    2     |     |      4      |     D   |
                                +------------------------------------+     +-----------------------+
                                |      5    |     4       |    2     |               
                                +------------------------------------+               
我期望的输出是:

 +--------+-------------+
 | rev_id | rev_text_id |
 +--------+-------------+
 |   1    |      1      |
 +----------------------+
 |   3    |      3      |
 +----------------------+
 |   4    |             |
 +----------------------+
我的目标是找到可以在单个查询中从每个表中删除的rev_id和rev_text_id。由于修订表可以为多个修订保留相等的rev_text_id,因此我需要排除第2页示例4中每个页面最高的rev_text_id

我开始涉足以下领域:

 SELECT
 r.rev_id,r.rev_text_id
 FROM revision r, page p, text t
 WHERE p.page_id = r.page_id
 AND t.rev_text_id = r.rev_text_id 
 AND p.rev_id != r.rev_id
 AND r.rev_text_id not in (
      SELECT max(r.rev_text_id)
      FROM revision AS r, page AS p
      WHERE r.rev_id = p.rev_id
 );
但这会跳过我所需输出中rev_id 4的记录,并且不包括空情况。

尝试以下操作:

SELECT r.`rev_id`, r.`rev_text_id`
FROM `Revision` AS r
WHERE r.`rev_text_id` NOT IN (SELECT r.`rev_text_id`
                              FROM `Revision` AS r, `Page` AS p
                              WHERE r.`rev_id` = p.`page_latest`;)
ORDER BY r.`rev_id`;

这基本上捕获了与PergEx最新相同的RevIdID,查找与RevIdID相关联的RevEthTythID ID,并使用那些RevTrimeStID ID作为筛选器。

请显示当前SQL Quer思,提供一个SQLFIDLE,并且,为了大家的理智,考虑将列重命名为RevIdID,PaGyId,和rev_text_id。该查询不会正确返回rev_id 4,因为您会过滤掉那些与page_latest具有相同rev_id的修订。我想要的输出包括rev_id 4,输出中没有附加rev_text_id。我猜这必须通过连接来实现?我不知道在纯SQL中是否有实现这一点的方法。我不知道有什么办法能把细胞分成那样的一行。在查询之后,您可能必须在PHP中处理该问题。