无法理解在 postgreSQL 中插入时的条件
Trouble with understanding a condition upon insert in postgreSQL
我有这个代码:
temp3=plpy.execute("""insert into tabl(warehouseid, timeo)
values(%s,%s) returning tablid"""%
(temp_warehouseid, 0 if not temp_timeo else temp_timeo if producttypeid==1 else 0))
我不确定我是否理解如何将值插入到列 timeo
代码 0 if not temp_timeo else temp_timeo
是可以理解的,但是我们有另一个条件 if producttypeid==1 else 0
我不确定它是如何覆盖以前的值的?
我以前从未在 SQL 查询中见过这种编码。
具体在这个例子中:
temp_warehouseid = 1
temp_timeo = 2
producttypeid =5
这会插入值为 (1,0)
的行 我认为这是因为 producttypeid=5
?但是我不明白它是如何工作的。
你问的是 python 结构。
tmp = VALUE1 if CONDITION else VALUE2
如果条件为真,则将 VALUE1 分配给 tmp。如果为假,则分配 VALUE2。
如果您的查询使用了两次此 python 构造。
timeo = VALUE1 if CONDITION1 else VALUE2 if CONDITION2 else VALUE3
如果 CONDITION1 为真,则选择值 1。如果为假,则计算第二个 "statement" VALUE2 if CONDITION2 else VALUE3
。
所以,如temp_timeo = 2
,条件not temp_timeo
为假。
而作为producttypeid = 5
,条件producttypeid==1
为假。
所以最后一个值0
被选中。
我有这个代码:
temp3=plpy.execute("""insert into tabl(warehouseid, timeo)
values(%s,%s) returning tablid"""%
(temp_warehouseid, 0 if not temp_timeo else temp_timeo if producttypeid==1 else 0))
我不确定我是否理解如何将值插入到列 timeo
代码 0 if not temp_timeo else temp_timeo
是可以理解的,但是我们有另一个条件 if producttypeid==1 else 0
我不确定它是如何覆盖以前的值的?
我以前从未在 SQL 查询中见过这种编码。
具体在这个例子中:
temp_warehouseid = 1
temp_timeo = 2
producttypeid =5
这会插入值为 (1,0)
的行 我认为这是因为 producttypeid=5
?但是我不明白它是如何工作的。
你问的是 python 结构。
tmp = VALUE1 if CONDITION else VALUE2
如果条件为真,则将 VALUE1 分配给 tmp。如果为假,则分配 VALUE2。
如果您的查询使用了两次此 python 构造。
timeo = VALUE1 if CONDITION1 else VALUE2 if CONDITION2 else VALUE3
如果 CONDITION1 为真,则选择值 1。如果为假,则计算第二个 "statement" VALUE2 if CONDITION2 else VALUE3
。
所以,如temp_timeo = 2
,条件not temp_timeo
为假。
而作为producttypeid = 5
,条件producttypeid==1
为假。
所以最后一个值0
被选中。