SQL - 列值取决于另一个列值是否出现在第三列中

标签 sql

我正在尝试创建一个表,其中第 3 列的值将取决于第 1 列的值是否出现在第 2 列的任何行中。

这是我要创建的表的样子:

doc_name    doc_used    tool
---------------------------------
MEA123     MEA123       tool1      
MEA123     Null         tool1
MEA555     Null         Null
MEA554     Null         Null
MEA123     Null         tool1

但我只设法让它在第一行工作:

doc_name    doc_used    tool
---------------------------------
MEA123     MEA123       tool1      
MEA123     Null         Null
MEA555     Null         Null
MEA555     Null         Null
MEA123     Null         Null

这是我试过的代码:

CREATE TABLE `/mydataset` AS (
SELECT 
doc_name,
doc_used,
(CASE 
   WHEN doc_name  in  (doc_used) then 'tool1'
END) as tool

FROM  `/test_dct_tool`)

可能的 doc_used 列表是未知的,所以我想检查列 doc_name 的值是否存在于 col doc_used 的整个值列表中。我试过使用“exists”和“in (select doc_used from )”,但也无济于事。

最佳答案

你似乎想要:

SELECT doc_name, doc_used,
       (CASE WHEN doc_name IN (SELECT t2.doc_used FROM `/test_dct_tool`) 
             THEN 'tool1'
        END) as tool
FROM `/test_dct_tool` t;

关于SQL - 列值取决于另一个列值是否出现在第三列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52307868/

相关文章:

sql - 将 .sql 文件导入我的数据库会乱序输入它们

mysql - 为什么我从 Django 查询中得到这个 sql 语法错误?

php - 选择具有两个条件的两个表

mysql - Mysql中Group by的限制

sql - RSQLite 插入忽略以跳过重复项

mysql - SQL 查询中的流程控制/条件 (CASE)

mysql - SQL - 将属性值设置为同一记录中另一个属性的值

php - 在 php 中查询或更改列名?

php - 数据库查询执行时间太长

MySQL:分组