mysql - 帮助编写 SELECT 语句

标签 mysql

我是 MySQL 的新手,不知道如何编写我的个人项目所需的查询。

我有三个表需要在此查询中进行对话 - books、tags 和 books_tags(联结表)。

它们的基本结构相当基本——书籍和标签都有一个 id 列和一个名称列(在书中它被称为“标题”,在标签中它被称为“标签”)。 books_tags 表有 book_id 和 tag_id。

我希望能够编写一个返回类似这样的查询

TITLE      | TAG
--------------------
BOOK ONE   | PHP
BOOK ONE   | MYSQL
BOOK ONE   | OOP
BOOK TWO   | CSS
BOOK TWO   | HTML
BOOK THREE | JAVASCRIPT

你明白了。我正在使用 PHP 循环和多个查询来执行此操作,但查询计数非常快地变得非常高并且变得一团糟。我想让它保持精简和简洁。

最佳答案

select b.title, t.tag
from books b
inner join books_tags bt on b.id = bt.book_id
inner join tags t on bt.tag_id = t.id
order by b.title, t.tag

如果你想列出没有标签的书,你可以这样做:

select b.title, t.tag
from books b
left outer join books_tags bt on b.id = bt.book_id
left outer join tags t on bt.tag_id = t.id
order by b.title, t.tag

关于mysql - 帮助编写 SELECT 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3825773/

相关文章:

MySQL 使用 ON 从多个表中删除不起作用

Mysql join 多表分层数据

mysql - MySQL 的触发代码问题

php - 我正在使用 php 作为后端在 android 中进行推送通知。如何将我的 Sql 数据库值检索到 android 中

mysql - 比较表中的 2 行

mysql - 在 Mysql 的新列中插入值

MYSQL - 基于2个不同的列显示2种类型的数据

PHP 查询不起作用

mysql - 克服 MyISAM 表中 2^32 行的 MySQL 限制

mysql - 对实体属性值模式中的两列进行排序