Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何选择列';是否仅当值存在于SQL中的另一列中时才设置值?_Sql_Database_Amazon Redshift - Fatal编程技术网

如何选择列';是否仅当值存在于SQL中的另一列中时才设置值?

如何选择列';是否仅当值存在于SQL中的另一列中时才设置值?,sql,database,amazon-redshift,Sql,Database,Amazon Redshift,我有一个稍微复杂的问题。有几列。本质上,逻辑是有一堆标题。每个标题都有一个唯一的标识符,它们是系列的一部分。正如《现在的表格》中所显示的,有几个不同的小妖精:小妖精、小妖精2和小妖精3。如果它们是不同的标题,则它们具有单独的唯一标识符,但由于它们都是地精,因此它们具有唯一的系列标识符。这些头衔/生物可以有任何家。但索伦只拥有巢穴里的那些 我想弄清楚的是,索伦所拥有的东西与其他人所拥有的东西相比,是索伦独有的。例如,吸血鬼是索伦唯一拥有的,因为没有其他人拥有它。如果索伦拥有唯一的序列标识符,那么我

我有一个稍微复杂的问题。有几列。本质上,逻辑是有一堆标题。每个标题都有一个唯一的标识符,它们是系列的一部分。正如《现在的表格》中所显示的,有几个不同的小妖精:小妖精、小妖精2和小妖精3。如果它们是不同的标题,则它们具有单独的唯一标识符,但由于它们都是地精,因此它们具有唯一的系列标识符。这些头衔/生物可以有任何家。但索伦只拥有巢穴里的那些

我想弄清楚的是,索伦所拥有的东西与其他人所拥有的东西相比,是索伦独有的。例如,吸血鬼是索伦唯一拥有的,因为没有其他人拥有它。如果索伦拥有唯一的序列标识符,那么我需要它

我想解决这个问题的方法是找到索伦所有的东西。根据索伦拥有的唯一系列标识符,我想找到表中的所有内容。目前只有很少的唯一序列标识符,所以很容易手动键入,就像唯一序列标识符='Gob',但是如果有很多,我该怎么做呢?我想找到索伦所有的以及索伦拥有的唯一序列标识符的所有匹配项。所以不存在不属于索伦的怪物和巨魔之类的东西。想象一下这张桌子是一百万或更多,而不是一小部分东西

感谢您的帮助,并对“呕吐”一词表示歉意,想不出更好的解释方法了!:D

要展示的示例表

您希望“标题”至少有一个“索伦”。如果是,您可以使用窗口功能:

select t.*
from (select t.*,
             sum(case when evillord = 'Sauron' then 1 else 0 end) over (partition by title) as num_saurons
      from t
     ) t
where num_saurons > 0;

选择索伦的所有唯一系列标识符。然后选择具有这些唯一系列标识符的所有标题

select * from mytable 
where unique_series_identifier in 
(
  select unique_series_identifier
  from mytable
  where evil_lord = 'Sauron'
)
order by unique_series_identifier, unique_identifier;
我建议对此查询使用以下索引。一个用于查找索隆的标题,一个用于通过唯一序列标识符查找标题

create index idx1 on mytable ( evil_lord, unique_series_identifier );
create index idx2 on mytable ( unique_series_identifier );