mysql - 查询需要获取一个表的列值,而该列值不存在于另一个表的字符串列中

标签 mysql sql

我有两个表:

mysql> select * from quizquestionbank;


| ID | QuestionFilePath | CorrectAnswer |


|  1 | p.wav            |             1 |

|  2 | q.wav            |             2 |

|  3 | a.wav            |             3 |

|  4 | b.wav            |             1 |

|  5 | m.wav            |             3 |

第二张表是:

mysql> select * from quizuserdetails;

| ID | MSISDN | QuestionIdDetails | AnswerRecord |

|  1 | 235346 | 1,3,4,5           | S,F,S,F      |

|  2 | 564574 | 4,5,67,88         | F,S,F,s      |

|  3 | 500574 | 5,55,66,44,2      | F,F,F,F      |

我想从表 1 中获取第二个表的 QuestionIdDetails 列中不存在的 ID。

我试过查询 Select ID from quizquestionbank where ID not in (Select QuestionIdDetails from quizuserdetails where msisdn = '235346 ');

但这不起作用 任何人都可以建议一种方法吗

最佳答案

使用find_in_set()将 id 与列表匹配,但这还不是全部:

Select disting qb.ID
from quizquestionbank qb
left join quizuserdetails qd
  on find_in_set(qb.id, QuestionIdDetails) > 0
  and msisdn = '235346'
where qd.id is null

这里发生了 3 件关键的事情:

  1. 使用左连接并在连接条件中包含额外条件
  2. 使用 find_in_set()(在 CSV 字符串中查找值)进行连接
  3. 使用 where 子句过滤掉匹配项,只留下丢失的连接

关于mysql - 查询需要获取一个表的列值,而该列值不存在于另一个表的字符串列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23559103/

相关文章:

php 和 mysql 实时提要

javascript - 如何添加选择按钮来上传 .sql 文件

sql - rails : How to query for all the objects whose every association have an attribute that is not null

sql - 获取不在数据库中的范围

mysql - 使用左外连接时,第二个表中的数据会重复

php - 我可以在 PHP 中混合使用 MySQL API 吗?

mysql - SQL 中的左外连接右表中缺少数据

php - 如何在 php codeigniter 中为我的网页制作一个唯一访问者计数器?

sql - 如何在向其中插入值时自动递增表变量的列

mysql - 我如何在 MySQL 中创建一个安全的计数器(我正在寻找一个通用的解决方案)?