SQL 'belong to'逻辑

标签 sql logic belongs-to

所以,我一直在尝试用 SQL 编写查询,但遇到了问题。我正在尝试写一个“属于”的条件。我想要做的是,如果要获取的值属于另一个表中的列,则填充一件事,否则填充 null。
例如。

NAME table
ID    NAMES
1      A
2      B
3      C
4      D
5      E

XYZ table
ID
2
4
5

我是这样写查询的

(CASE WHEN NAME.ID IN (SELECT ID FROM XYZ) THEN NAME.NAMES ELSE NULL END ) AS 'ABC'

这个查询确实运行了,但是它已经运行了 14 个小时(对于非常大量的数据来说很明显)并且仍然没有结果。此逻辑是否存在缺陷或是否有更好的方法可以完成?

我期望这样的结果:

ABC
NULL
B
NULL 
D
E

最佳答案

你只需要一个简单的左连接:

SELECT
    CASE WHEN t2.ID IS NOT NULL THEN t1.NAMES END AS ABC
FROM NAME t1
LEFT JOIN XYZ t2
    ON t1.ID = t2.ID;

enter image description here

Demo

请注意,CASE 表达式的 else 条件,如果未明确指定,则默认为 NULL。此行为在这里有效,因为如果 NAME 表中的给定记录与 中的任何记录匹配,您希望呈现 NULL XYZ 表。

关于SQL 'belong to'逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51779558/

相关文章:

sql - 不能使字段独一无二!

sql - 在 Microsoft Access 中编写查询,字段描述错误

sql - 什么时候在关系数据库中使用枚举或小表?

sql - 我需要使用 join fetch,但它会导致 "query specified join fetching, but the owner of the fetched association was not present in the select list"

logic - VHDL 正交解码器 : Sequential/Combinatorial Logic

ruby-on-rails - 创建同时具有 own_to 和 validates_presence_of 验证的对象的正确方法是什么?

ruby-on-rails - 带有 accepts_the_nested_attributes 的 belongs_to 不在对象中保存外键

java - 是什么让对象字段自动改变?

java - 如何在java中根据用户输入计算百分比

ruby-on-rails - 在 Ruby on Rails 中设置相互的 belongs_to