Home > Database > Mysql Tutorial > body text

SQL SELECT 语句的表连接

WBOY
Release: 2016-06-07 18:01:14
Original
1339 people have browsed it

为了从两个或多个表中选出数据,我们一般使用表连接来实现这个功能。

我来给大家介绍join(连接)的概念. 为此准备了两个试验用表: album(专辑表) 和 track(曲目表).

  专辑表:包含200首来自Amazon的音乐CD的概要信息。

  album(asin, title, artist, price, release, label, rank)

  曲目表:每张专辑中的曲目(因为是音乐CD,所以也可叫歌曲)的详细信息。

  track(album, dsk, posn, song)

  SQL短语 FROM album JOIN track ON album.asin=track.album 表示连接album和track表。

  其中,album.asin表示专辑的惟一标识号,track.album表示曲目表中和专辑关联的专辑号。

  连接后,得到一个临时表,该临时表中每条记录包含的字段由两部分组成,

  除了专辑表中的对应字段album(title, artist ...),还包含曲目表的所有字段track(album, disk, posn and song)。

  有了这张临时表,很多查询就容易实现了。

  看看一些具体的实例,

  一、列出歌名为'Alison'的专辑名称和作者
代码如下:
SELECT title, artist
FROM album JOIN track
ON (album.asin=track.album)
WHERE song = 'Alison'


  显然,歌名、专辑名称和作者分别在两个表中,必需使用表连接来完成这个查询。

  二、哪个artist录制了歌曲'Exodus'

SELECT artist
FROM album JOIN track ON (asin=album)
WHERE song = 'Exodus'

  用作连接的两个字段asin,album因为在两个表中都是惟一的,所以不一定要加表名作为前缀。

  但为了方便理解,建议使用前缀,形如:album.asin=track.album

或者如果表名过长的话,可以用as达到取代作用,如 FROM album as a JOIN track as t ON a.asin=t.album

  三、列出曲目表中所有属于'Blur'专辑的歌曲
代码如下:
SELECT song
FROM album JOIN track ON (asin=album)
WHERE title = 'Blur'

  如果我们把 album JOIN track ON (asin=album) 看成一个临时表的话,join的概念就很好理解了。
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template