sql - 使用 Sequelize 选择所有有效的起始字母

标签 sql postgresql sequelize.js

我有一个国家列表,这些国家/地区将由起始字母分隔,例如,当您单击“A”时,它将进行 API 调用以返回所有以“A”开头的国家/地区。

但是,有些字母在我们的系统中没有任何国家/地区,这些可能会随着我们更新数据而发生变化。

我想要一个查询,让我知道哪些字母没有以它们开头的任何国家/地区,以便我可以禁用它们。

我可以通过对字母表中的每个字母运行 findOne 查询来做到这一点……但这并不整洁或高效。有没有办法从单个查询中获取数据?

最佳答案

我能够通过在不同的函数中使用子字符串函数来获得所需的结果。

 const result = await Countries.findAll({
    attributes: [
      [
        sequelize.fn(
          'DISTINCT',
          sequelize.fn('substring', sequelize.col('countryName'), 1, 1),
        ),
        'letter',
      ],
    ],
    group: [sequelize.fn('substring', sequelize.col('countryName'), 1, 1)],
    raw: true,
  })

关于sql - 使用 Sequelize 选择所有有效的起始字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59147919/

相关文章:

mysql - SQL日期格式转换? [dd.mm.yy 到 YYYY-MM-DD]

sql - 单独使用子查询会产生不同的结果

sql - PostgreSQL char varchar数据类型搜索速度差异

javascript - Sequelize 文档中的这些井号/井号符号代表什么?

mysql - INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN 有什么区别?

mysql - 在 SQL 中选择句子的特殊形式

regex - 如何在postgresql中提取电子邮件最后一个 '@'字符之前的部分?

node.js - 使用postgresQL在NodeJ中使用JWT进行用户身份验证?

postgresql - 无法在 Sequelize 中将字符 'N' 插入 PostgreSQL

MySQL,将数据插入多列