简单地说,我想摆脱订购我的 pid。
我不想创建一个名为“rank”的 4 行额外表,而是希望能够附加一个具有相同效果的虚拟排名。我的等级只是为了给我的标签一个位置。由于每个 id 有 4 个标签,因此枚举这些标签的值为 1-4。
这样我就不必一遍又一遍地手动输入相同的数字。
我的桌子:
人 tags_rel 标签排名 编号 | 等id | 进程号 | 时间 | 摆脱ID | 标签编号 -----+----- ---+-----+-----+---- ---+-------- -- 第2345章 1 | 第2345章 2 | 1 1 | 面包 1 第2346章 2 | 第2345章 3 | 2 2 | 水 2 第2347章 3 | 第2345章 1 | 3 3 | 承担 3 4 | 第2345章 6 | 4 4 | 牛奶 4 ---+--------+-----+---- 5 | 热狗 5 | 第2346章 3 | 1 6 | 第2346章 4 | 2 7 | 第2346章 2 | 3 8 | 第2346章 5 | 4 --+--------+-----+---- 9 | 第2347章 6 | 1 10 | 第2347章 1 | 2 11 | 第2347章 4 | 3 12 | 第2347章 5 | 4 --+--------+-----+----
我的查询:
SELECT p.id as pid, t.tag as tname, tr.tid as trid, r.id as rank
FROM people AS p
RIGHT JOIN tags_rel AS tr ON tr.pid = p.id
LEFT JOIN tags AS t ON tr.tid = t.id
LEFT JOIN rank AS r ON tr.rid = r.id
MySQL 预期结果:
> +--------+------------+--------+------+ > | 进程号 | 名称 | 三重奏 | 排名 | > +--------+------------+--------+------+ > | 第2345章 水| 2 | 1 | > | 第2345章 面包| 1 | 2 | > | 第2345章 麦片| 高分辨率照片| CLIPARTO 3 | 3 | > | 第2345章 牛奶| 4 | 4 | > | 第2346章 麦片| 高分辨率照片| CLIPARTO 3 | 1 | > | 第2346章 牛奶| 4 | 2 | > | 第2346章 水| 2 | 3 | > | 第2346章 热狗 | 5 | 4 | > | 第2347章 巧克力| 高分辨率照片| CLIPARTO 6 | 1 | > | 第2347章 面包| 1 | 2 | > | 第2347章 面包| 4 | 3 | > | 第2347章 面包| 5 | 4 | > +--------+------------+--------+------+
我使用排名作为职位。因此,无论附加到 pid 的任何标签,我都想按第一个位置显示。由于每个 pid 的标签不同,因此它们的位置也不同。我可能想通过 rank=1 调用 tname=water ,它只会在位置 1 显示所有“水”标签。
谢谢!