说我有2个表,一个叫做类别,一个叫做cat_pages。MYSQL加入唯一的结果行
类别表具有列ID,标题和时间戳。例如:
CREATE TABLE categories (
id INT UNSIGNED PRIMARY KEY,
title VARCHAR(32),
`timestamp` TIMESTAMP,
INDEX (title)
) Engine=InnoDB;
的cat_pages有2列,CAT_ID和PAGE_ID:
CREATE TABLE cat_pages (
cat_id INT UNSIGNED
REFERENCES categories (id)
ON DELETE CASCADE ON UPDATE CASCADE,
page_id INT UNSIGNED
REFERENCES pages (id)
ON DELETE CASCADE ON UPDATE CASCADE,
UNIQUE INDEX (cat_id, page_id),
INDEX (page_id, cat_id),
) Engine=InnoDB;
我想加盟与该ID的cat_pages表分类表,这样
- 仅检索category_pages表中具有id的类别
- 每个类别仅在结果集中显示一次
查询:
SELECT * FROM categories as c
LEFT JOIN cat_pages as p ON c.id = p.cat_id
产生具有类别重复多次(因为有在cat_pages表多个匹配的结果集。我需要什么才能让每个类别只显示一次,而如果cat_pages表格中没有匹配,则根本不显示?
从你的查询中左键落地实现第一点 – Dalen 2011-04-19 08:05:39
代码为王。描述表的最好方法是给出表创建语句,以及样本数据的'INSERT'语句。你提供的'SELECT'查询在描述你想要的内容时非常有帮助。 – outis 2011-04-19 08:20:22