Postgre SQL   发布时间:2022-05-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了postgresql – 左外连接 – 如何在第二个表中返回存在的布尔值?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在CentOS 6上的POSTGResql 9中,pref_users表中有60000条记录:
# \d pref_users
                   table "public.pref_users"
   column   |            Type             |     ModifIErs      
------------+-----------------------------+--------------------
 ID         | character varying(32)       | not null
 first_name | character varying(64)       | not null
 last_name  | character varying(64)       | 
 login      | timestamp without time zone | default Now()
 last_ip    | inet                        | 
 (... more columns skipped...)

另一个表格中包含大约500个用户不允许再玩的内容:

# \d pref_ban2
                 table "public.pref_ban2"
   column   |            Type             |   ModifIErs   
------------+-----------------------------+---------------
 ID         | character varying(32)       | not null
 first_name | character varying(64)       | 
 last_name  | character varying(64)       | 
 city       | character varying(64)       | 
 last_ip    | inet                        | 
 reason     | character varying(128)      | 
 created    | timestamp without time zone | default Now()
Indexes:
    "pref_ban2_pkey" PRIMary KEY,btree (ID)

php脚本中,我试图在jquery-datatable中显示来自pref_users的所有60000个用户.我想标记被禁用的用户(在pref_ban2中找到的用户).

这意味着我需要一个名为ban的列,用于查询中包含true或false的每个记录.

所以我正在尝试左外连接查询:

# SELEct                          
       b.ID,-- how to make this column a Boolean?
       u.id,u.first_name,u.last_name,u.city,u.last_ip,TO_CHAR(u.login,'DD.Mm.YYYY') as day
from pref_users u left outer join pref_ban2 b on u.id=b.ID
limit 10;
 ID |    ID    | first_name  | last_name |    city     |     last_ip     |    day     
----+----------+-------------+-----------+-------------+-----------------+------------
    | DE1      | Alex        |           | Bochum      | 2.206.0.224     | 21.11.2014
    | DE100032 | Княжна Мэри |           | London      | 151.50.61.131   | 01.02.2014
    | DE10011  | Aлександр Ш |           | Симферополь | 37.57.108.13    | 01.01.2014
    | DE10016  | Semen10     |           | usa         | 69.123.171.15   | 25.06.2014
    | DE10018  | Горловка    |           | Горловка    | 178.216.97.214  | 25.09.2011
    | DE10019  | -Дмитрий-   |           | пермь       | 5.140.81.95     | 21.11.2014
    | DE10047  | Василий     |           | Cумы        | 95.132.42.185   | 25.07.2014
    | DE10054  | Maedhros    |           | Чикаго      | 207.246.176.110 | 26.06.2014
    | DE10062  | ssergw      |           | москва      | 46.188.125.206  | 12.09.2014
    | DE10086  | Вадим       |           | Тула        | 109.111.26.176  | 26.02.2012
(10 rows)

如您所见,上面的b.ID列为空 – 因为这10个用户未被禁止.

如何在该列中获取false值而不是String?

而且我不是在一些coalesceor case表达式之后,但我正在寻找“正确”的方式来进行这样的查询.

具有外连接的CASE或COALESCE语句是执行此操作的正确方法.
SELEct
  CASE 
    WHEN b.ID IS NulL THEN true
    ELSE false
  END AS bAnned,u.id,'DD.Mm.YYYY') as day
from pref_users u 
left outer join pref_ban2 b 
  on u.id=b.ID
limit 10;

大佬总结

以上是大佬教程为你收集整理的postgresql – 左外连接 – 如何在第二个表中返回存在的布尔值?全部内容,希望文章能够帮你解决postgresql – 左外连接 – 如何在第二个表中返回存在的布尔值?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: