真实项目例子教你实践SQL入门(一)

1,460 阅读1分钟


例子

门店表 store, (Id, Name)

会员表 member(Id, Name, StoreId)

要求:

列出所有门店,并为指定用户Id 所属的门店标记为所Isfavorite = 1。


image.png


思路

先取主要数据,再过滤、或联表找关系。

联表是关键:既可以是现有的表,也可以是一张临时表。( select * from xxx ) tempTable 你就可以当成一张表。


sql 过程

  1. 列出所有门店
  1. select store.Id,store.Name from store
  1. 找到指写用户Id的所属门店
  1. select StoreId from member

where member.Id = "faf24f20-59fe-11e9-bd16"

  1. 以1为主表,2为辅表,命名为userStore ,left join 关联起来(left jion的用法是 以左边的表为主,去关联右边的表,左边出来多少条数据就是多少条,即使右表没有任何对应的数据。
  1. 以下就是将所有门店和指定用户的 favorateStoreId在列表数据里标出来了。
  2. image.png


  1. IF、 IS NULL 用法。将favorateStoreId 标记为所Isfavorite = 1,这样前端更好判断
  1. -- 列出所有门店 ,关联userStore,并用IF 判断标记出 Isfavorite 为1就是默认门店

select store.Id, IF(userStore.StoreId IS NULL,0,1) as Isfavorite, store.Name

from store

left join

-- 找从用户表找到用户的所属门店

(select StoreId from member

where member.Id = "faf24f20-59fe-11e9-bd16-a7e8be91") userStore

on

userStore.StoreId = store.Id

b. 结果如下:

image.png



喜欢请关注我们的公众号: