select emp.name from emp inner join dep on emp.dep_id = dep.id where dep.name='技術'; select emp.name from dep inner join emp on emp.dep_id = dep.id where dep.name='技術';
示例:python
# 一對一 # 查詢一下王洋的電話號碼 # ret = models.Author.objects.filter(name='王洋').values('au__telephone') # ret = models.AuthorDetail.objects.filter(author__name='王洋').values('telephone') # print(ret) #<QuerySet [{'au__telephone': '110'}]> #<QuerySet [{'telephone': '110'}]> # # 一對多 # 海狗的慫逼人生這本書是哪一個出版社出版的 # ret = models.Book.objects.filter(title='海狗的慫逼人生').values('publishs__name') # print(ret) #<QuerySet [{'publishs__name': '24期出版社'}]> # ret = models.Publish.objects.filter(book__title='海狗的慫逼人生').values('name') # print(ret) #<QuerySet [{'name': '24期出版社'}]> #查詢一下24期出版社出版了哪些書 # ret = models.Publish.objects.filter(name='24期出版社').values('book__title') # print(ret) #<QuerySet [{'book__title': '華麗的產後護理'}, {'book__title': '海狗的慫逼人生'}]> # ret = models.Book.objects.filter(publishs__name='24期出版社').values('title') # print(ret) #<QuerySet [{'title': '華麗的產後護理'}, {'title': '海狗的慫逼人生'}]> # 多對多 #海狗的慫逼人生 是哪些做者寫的 # ret = models.Book.objects.filter(title='海狗的慫逼人生').values('authors__name') # print(ret) # ret = models.Author.objects.filter(book__title='海狗的慫逼人生').values('name') # print(ret) #<QuerySet [{'name': '王洋'}, {'name': '海狗'}]> # return render(request,'index.txt',{'x':123,'y':456}) # related_name # 查詢一下24期出版社出版了哪些書 ret = models.Publish.objects.filter(name='24期出版社').values('xxx__title') #xxx代替反向查詢的小寫表名 print(ret)
聚合查詢django
ret = models.Book.objects.all().aggregate(a=Avg('price'),m=Max('price')) print(ret) #{'price__avg': 45.1, 'price__max': Decimal('200.00')} python字典格式,也就是說,聚合查詢是orm語句的結束
分組查詢code
# 每一個出版社出版的書的平均價格 # 用的是publish表的id字段進行分組 # ret = models.Book.objects.values('publishs__id').annotate(a=Avg('price')) # 用的book表的publishs_id字段進行分組 # ret = models.Book.objects.values('publishs_id').annotate(a=Avg('price')) # print(ret) # ret = models.Publish.objects.annotate(a=Avg('book__price')).values('a') # print(ret) #<QuerySet [{'a': None}, {'a': 71.166667}, {'a': 6.0}]>
F查詢orm
from django.db.models import Avg, Sum, Max, Min, Count,F 查詢一下評論數大於點贊數的書 # ret = models.Book.objects.filter(comment__gt=F('good')) # print(ret) 將全部書的價格上調100塊 # models.Book.objects.all().update( # price=F('price')+100 # )
Q查詢ci
from django.db.models import Avg, Sum, Max, Min, Count, F,Q ret = models.Book.objects.filter(Q(id=2)&Q(Q(price__gt=112)|~Q(comment__lte=200))) print(ret)