我有下表
id val
--------------
1 abc
2 xyz
3 abc
4 abc
鉴于主键(id),我需要能够获得与具有主键的行具有相同val的所有行。
目前我有以下django代码:
Table.objects.filter(val = Table.objects.get(id=1).val)
但这会对数据库进行两次查询。我想将此减少为单个数据库调用。这在Django中是否可行。
答案 0 :(得分:4)
您始终可以使用extra()
:
Table.objects.extra(where=['val=(select val from app_table where id=1)'])
这将导致单个查询:
SELECT
*
FROM
app_table
WHERE
val=(SELECT val FROM app_table WHERE id=1)