Mysql复杂自然加入选择语句

时间:2018-06-13 12:49:15

标签: mysql sql join mariadb natural-join

我正在尝试在具有特定顺序和特定范围的两个表上创建自然连接。

我的桌子

dictionary
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| wid   | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| word  | varchar(56)      | NO   | UNI | NULL    |                |
+-------+------------------+------+-----+---------+----------------+

g219
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| pos   | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| wid   | int(10) unsigned | NO   | MUL | NULL    |                |
+-------+------------------+------+-----+---------+----------------+

字典设置了一个唯一(区分大小写)单词和标签的字典,并为每个单词分配了一个ID号。 g219本质上是一本书,其中pos是书中单词/标签的位置,wid是字典中对应的单词id。我可以执行一个完整的自然连接,按如下方式列出这本书:

SELECT word FROM dictionary
    NATURAL JOIN g219
    ORDER BY g219.pos;

我还可以通过添加LIMIT [n]来应用限制,但这只会返回第一个[N]结果。我不知道如何将其限制在指定的范围内。两个

SELECT word FROM dictionary
    NATURAL JOIN g219
    ORDER BY g219.pos
    WHERE pos BETWEEN 50 AND 100;

SELECT word FROM dictionary
     NATURAL JOIN g219
     ORDER BY g219.pos
     WHERE pos > 50 AND pos < 100;

失败。

1 个答案:

答案 0 :(得分:2)

首先是“WHERE”,然后是“ORDER BY”;)

相关问题