În lista de selectare poate fi specificată o singură expresie

Trebuie să fac această interogare sql să funcționeze:

SELECT     TOP 15 id, thumb, width, height
FROM         (SELECT     vPictures.id, vPictures.thumb, vPictureCrops.width, vPictureCrops.height
                       FROM          vPictures INNER JOIN
                                              vPictureCrops ON vPictures.id = vPictureCrops.picid
                       WHERE      (vPictureCrops.width = '602') AND (vPictureCrops.height = '131')
                       GROUP BY vPictures.id, vPictures.thumb, vPictureCrops.width, vPictureCrops.height) AS derivedtbl_1
WHERE     (id NOT IN
                          (SELECT     TOP 0 vPictures_1.id, vPictures_1.datetime, vPictures_1.url, vPictures_1.author, vPictures_1.companyID, vPictures_1.source, 
                                                   vPictures_1.people, vPictures_1.text, vPictures_1.thumb, vPictures_1.logo, vPictureCrops_1.id AS Expr1, vPictureCrops_1.picid, 
                                                   vPictureCrops_1.url AS Expr2, vPictureCrops_1.width, vPictureCrops_1.height
                            FROM          vPictures AS vPictures_1 INNER JOIN
                                                   vPictureCrops AS vPictureCrops_1 ON vPictures_1.id = vPictureCrops_1.picid))
ORDER BY id DESC

Mă puteți ajuta?

Mesajul de eroare: „Numai o expresie poate fi specificată în lista de selectare când subinterogarea nu este introdusă cu EXISTS)”


person Community    schedule 21.05.2011    source sursă
comment
...care RDBMS? Bănuiesc că SQL Server.   -  person    schedule 21.05.2011


Răspunsuri (2)


Unde (ID nu IN(

Selectarea trebuie să aibă un singur câmp, iar IN nu poate înțelege ce coloană încercați să analizați.

De exemplu, de pe aici

USE AdventureWorks2008R2;
GO
SELECT p.FirstName, p.LastName
FROM Person.Person AS p
    JOIN Sales.SalesPerson AS sp
    ON p.BusinessEntityID = sp.BusinessEntityID
WHERE p.BusinessEntityID IN
   (SELECT BusinessEntityID
   FROM Sales.SalesPerson
   WHERE SalesQuota > 250000);
GO

Oricum nu sunt sigur ce încercați să obțineți cu interogarea, puteți explica utilizarea clauzei where in,

person Phil Murray    schedule 21.05.2011

Pot vedea două probleme cu (id NOT IN (SELECT TOP 0 vPictures_1.id, ...

  1. numai atunci când coloana trebuie specificată în instrucțiunea select după IN. De exemplu (id NOT IN (SELECT vPictures_1.id FROM ...

  2. chiar dacă faceți un singur câmp vPictures_1.id, condiția va fi întotdeauna falsă din cauza top 0.

person Alex Aza    schedule 21.05.2011