作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在表中创建一个新列。如果主键存在于其他表中或满足特定条件,则返回“yes”,否则返回“no”。这是一个例子:
表 1:
Student
a
b
c
d
表 2:
Student | Subject
a | english
a | math
b | english
b | science
b | match
c | science
c | english
d | math
我希望看到此列添加到 Table1:
Student | HasMath
a | Yes
b | Yes
c | No
d | Yes
因此,如果学生的姓名存在于过滤表中,其中 Subject = 'Math'
,则生成的列将返回“是”,否则返回“否” '。
有人可以告诉我如何通过 SQL 来做到这一点吗?非常感谢。
最佳答案
您通常会使用 exists
来执行此操作:
select t1.*,
(case when exists (select 1
from table2 t2
where t2.student = t1.student and t2.subject = 'math'
)
then 'yes' else 'no'
end) as has_math
from table1 t1;
与 Tim 的答案不同,即使第二个表中有多个 'math'
行,这也保证每个学生只返回一行。
关于SQL 如果存在则 "Yes' 否则 "No' 在新列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65838809/
我是一名优秀的程序员,十分优秀!