加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – MySQL替换每条记录的值

发布时间:2020-12-13 22:34:06 所属栏目:PHP教程 来源:网络整理
导读:我的数据库中有一个表如下所示: ========= | id |代码| ?========= | 1 | a | ?========= | 2 | e | ?========= | 3 | r | ?========= 等等.我希望能够做一个查询,告诉我字母表中的哪些字母不在表格中. 我原本想要这样的查询: SELECT REPLACE(‘abcdefghij
我的数据库中有一个表如下所示:

=========
| id |代码|
?=========
| 1 | a |
?=========
| 2 | e |
?=========
| 3 | r |
?=========

等等.我希望能够做一个查询,告诉我字母表中的哪些字母不在表格中.

我原本想要这样的查询:

SELECT REPLACE(‘abcdefghijklmnopqrstuvwxyz’,(SELECT code FROM table),”);

并希望输出’defghijklmnopqrstuvwxyz’,我可以将其爆炸成一个未使用的字符数组.不幸的是,MySQL的REPLACE不允许使用值表.

有关如何构建此列表的任何建议?

解决方法

我建议这样做的方法是为字母表中的每个字母创建一个带有行的表,这样可以很容易地删除末尾带有LEFT JOIN和GROUP_CONCAT的字母.

由于缺少该表,您将不得不求助于黑客攻击,使用临时变量和行数多于字母数的表之间的JOIN构建临时“字母表”.对于此示例,我使用INFORMATION_SCHEMA.COLLATIONS.

SELECT GROUP_CONCAT(CHAR(ch) SEPARATOR '') 'missing letters' FROM 
  (SELECT @tmp:=@tmp+1 ch 
   FROM (SELECT @tmp:=96) a,INFORMATION_SCHEMA.COLLATIONS
   WHERE @tmp<122) z
LEFT JOIN TableA ON ch=ORD(TableA.code)
WHERE TableA.code IS NULL;

嵌套的SELECT构建字母序列,LEFT JOIN删除TableA(您的表)中存在的字母. GROUP_JOIN连接结果字母.结果是一个字符串,其中包含TableA中不存在的所有字母.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读