您能够使用 JOIN 语句,根据它们之间的相关列组合两个或多个表中的行。mysql
假设您有 "users" 表和 "products" 表:sql
{ id: 1, name: 'John', fav: 154}, { id: 2, name: 'Peter', fav: 154}, { id: 3, name: 'Amy', fav: 155}, { id: 4, name: 'Hannah', fav:}, { id: 5, name: 'Michael', fav:}
{ id: 154, name: 'Chocolate Heaven' }, { id: 155, name: 'Tasty Lemons' }, { id: 156, name: 'Vanilla Dreams' }
能够使用 users 的 fav 字段和 products 的 id 字段来组合这两个表。
组合用户和产品,查看用户最喜欢的产品名称:code
sql = "SELECT users.name AS user, products.name AS favorite FROM users INNER JOIN products ON users.fav = products.id"
('John', 'Chocolate Heaven') ('Peter', 'Chocolate Heaven') ('Amy', 'Tasty Lemon')
注释:您能够使用 JOIN 而不是 INNER JOIN。您都会获得相同的结果。排序
sql = "SELECT users.name AS user, products.name AS favorite FROM users LEFT JOIN products ON users.fav = products.id"
('John', 'Chocolate Heaven') ('Peter', 'Chocolate Heaven') ('Amy', 'Tasty Lemon') ('Hannah', None) ('Michael', None)
sql = "SELECT users.name AS user, products.name AS favorite FROM users RIGHT JOIN products ON users.fav = products.id"
('John', 'Chocolate Heaven') ('Peter', 'Chocolate Heaven') ('Amy', 'Tasty Lemon') (None, 'Vanilla Dreams')
update a inner join b on a.id=b.id set a.x=b.x,a.y=b.y;
在表中,可能会包含重复值。这并不成问题,不过,有时您也许但愿仅仅列出不一样(distinct)的值。
关键词 DISTINCT 用于返回惟一不一样的值。产品
语法:it
SELECT DISTINCT 列名称 FROM 表名称
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
下面的运算符可在 WHERE 子句中使用:table
操做符 描述ast
= 等于 | header |
---|---|
<> | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN 在某个范围内
LIKE 搜索某种模式
注释:在某些版本的 SQL 中,操做符 <> 能够写为 !=。date
SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter' SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter' SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William') AND LastName='Carter'
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC