首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL如何根据多行条件选择id

SQL如何根据多行条件选择id
EN

Stack Overflow用户
提问于 2022-03-29 13:35:03
回答 1查看 607关注 0票数 -1

我正在使用nodejs和postgresql。我的postgresql关系有3列:

  • id
  • lesson_id
  • tag_id。

一堂课可以属于一个或多个标签。

我正在尝试选择属于所请求的标签的所有课程。

例如

  • 所请求的标记为id 10和2,查询应使用第id =3课进行响应。
  • 请求的标记是id 1和17,查询应该使用第6课id =6进行响应。
  • 所请求的标记为3,查询应响应于课程id 1、2、4。

我尝试了一些sql查询,比如这个:

代码语言:javascript
复制
 const selectLessonByTag = await pgClient.query(            
       `SELECT DISTINCT ON (lesson_id)
       lesson_id FROM "lesson_has_tag"
       WHERE tag_id = $1  AND tag_id = $2
       GROUP BY lesson_id        
       ORDER BY lesson_id`, 
       [2,10]);

但这不是预期的答案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-29 13:42:29

您可以这样使用not exists

代码语言:javascript
复制
select distinct lesson_id
from lesson_tags as lt1
where not exists (
    select *
    from (values (10), (2)) as required_tags(tag_id)
    where not exists (
        select *
        from lesson_tags as lt2
        where lt2.lesson_id = lt1.lesson_id and lt2.tag_id = required_tags.tag_id
    )
)

很难理解这么少的解释:

  • 有一个名为required_tags的表值构造函数,它包含值10和2。
  • 内部查询测试外部查询中的教训是否不存在10或2。
  • 如果内部查询没有生成匹配,则选择外部行。

DB<>Fiddle

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71663062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档