高端家装修公司,站内关键词自然排名优化,北京市建设厅门户网站,网站优化关键词排名公司出处#xff1a;http://www.cnblogs.com/jacklondon/archive/2012/01/13/2321686.html近日偶尔看到一个很巧妙的 SQL 技巧#xff0c;一个简单的 SQL 同时验证帐号是否存在、密码是否正确。之前从未曾想过这么做#xff0c;也未曾见过别人这么做。虽是奇技淫巧#xff0c;却… 出处http://www.cnblogs.com/jacklondon/archive/2012/01/13/2321686.html近日偶尔看到一个很巧妙的 SQL 技巧一个简单的 SQL 同时验证帐号是否存在、密码是否正确。之前从未曾想过这么做也未曾见过别人这么做。虽是奇技淫巧却真正所谓构思巧妙。如果用来面试考考别人真的能够难倒一大片兄弟。好东西不敢独享特公开与大家同乐。 SELECT CASE WHEN p.encrypted_password ? THEN 1 ELSE 0 END FROM tm_app_user u, tm_app_user_credential p WHERE u.app_user_uuid p.app_user_uuid AND (LOWER(u.user_sign_in_nm) ? OR LOWER(u.email) ?) 解释 a. 如果用户名不存在则查询结果是无数据 b. 如果用户名存在而密码不正确则返回 0 c. 如果用户名存在而密码正确则返回 1 之所以把密码单独用一个表保存是因为用户的其他信息用户名、邮件、电话与密码是两种不同性质的东西系统架构师决定分开保存有助于提醒程序员这种差别: 用户的其他信息可以查看密码不能查看用户的其他信息更改时可以看到更改前的数据密码更改时不能看到更改前的数据修改用户密码与修改用户其他信息是两个不同页面。虽说程序员普遍有“文人相轻”的毛病(读书人互相瞧不起)但看到这个 SQL不能不让人佩服。转载于:https://www.cnblogs.com/wqvbjhc/archive/2012/01/14/2465086.html