1

我有下表

id       val  
--------------
1        abc  
2        xyz  
3        abc  
4        abc

给定主键(id),我需要能够获得与具有主键的行具有相同 val 的所有行。

目前我有以下 django 代码:

Table.objects.filter(val = Table.objects.get(id=1).val)  

但这会对数据库进行两次查询。我想将其减少为单个数据库调用。这在 Django 中是否可行。

4

1 回答 1

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)
于 2013-09-18T11:07:33.247 回答