Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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 - Fatal编程技术网

SQL查询-如何仅显示存在不同值的位置

SQL查询-如何仅显示存在不同值的位置,sql,database,Sql,Database,我在一个开源数据库LibreOffice库中创建了一个简单的表,其中包含一个记录集合。它包含艺术家、唱片集、年份、唱片标签以及作为主键的唱片代码。我正在尝试创建一个SQL查询,当艺术家在多个标签上时,该查询将仅显示艺术家和记录标签 SELECT "RecordLabel", "ArtistName" FROM "record_collection" GROUP BY "ArtistName", "RecordLabel" HAVING ( MIN ("RecordLabel") > 1)

我在一个开源数据库LibreOffice库中创建了一个简单的表,其中包含一个记录集合。它包含艺术家、唱片集、年份、唱片标签以及作为主键的唱片代码。我正在尝试创建一个SQL查询,当艺术家在多个标签上时,该查询将仅显示艺术家和记录标签

SELECT "RecordLabel", "ArtistName" 
FROM "record_collection"
GROUP BY "ArtistName", "RecordLabel"
HAVING ( MIN ("RecordLabel") > 1) AND...
当同一艺术家的唱片标签不同时。例如,弗兰克·西纳特拉在3个不同的标签上,我只想看到他的名字和3个标签


任何帮助都将不胜感激

您可以使用以下查询获取多个标签上的艺术家列表:

SELECT ArtistName
FROM record_collection
GROUP BY ArtistName
HAVING COUNT(DISTINCT RecordLabel) > 1;
然后,您可以在查询中使用此选项来获取更多详细信息:

SELECT rc.*
FROM record_collection rc
WHERE rc.ArtistName IN (SELECT ArtistName
                        FROM record_collection
                        GROUP BY ArtistName
                        HAVING COUNT(DISTINCT RecordLabel) > 1
                       );
一种更聪明的方法是为一位艺术家选择唱片,其中有另一张唱片的标签不同:

SELECT rc.*
FROM record_collection rc
WHERE EXISTS (SELECT 1
              FROM record_collection rc
              WHERE rc2.ArtistName = rc.ArtistName AND rc2.RecordLabel <> rc.RecordLabel
             );

如果索引正确,此版本的性能可能会更好。

非常感谢!我知道是这样的。我对SQL还是相当陌生,不知道在哪里放置DISTINCT命令。那很有效!