2011-05-26 83 views
5

我有以下SQL查詢:如何返回MySQL的子查詢的行數

SELECT games.id, games.GameTitle FROM games 
WHERE EXISTS (
       SELECT filename FROM banners 
       WHERE banners.keyvalue = games.id 
       AND banners.filename LIKE '%front%' 
      ) 

這是不是我的使用十分正確

什麼,我想是這樣的:

SELECT games.id, games.GameTitle 
FROM games WHERE EXISTS (
    COUNT(SELECT filename FROM banners 
    WHERE banners.keyvalue = games.id AND banners.filename LIKE '%front%') > 1 
    ) 

即只有當子查詢檢索多於一行時才選擇。

回答

5

只要這樣的:

SELECT games.id, games.GameTitle 
FROM games 
WHERE (
    SELECT COUNT(filename) 
    FROM banners 
    WHERE banners.keyvalue = games.id AND banners.filename LIKE '%front%' 
) > 1 
+1

+1你打我吧。 'COUNT(*)'也可以工作。 – Mike 2011-05-26 20:14:08

+0

非常感謝你......那是一種享受.....我也很親近! – Alex 2011-05-26 20:14:43

+0

@Mike,因爲選擇是在原始查詢中的'文件名',我保持。 @亞歷克斯很高興我可以幫助:= – krtek 2011-05-26 20:16:27

2
SELECT games.id, games.GameTitle 
    FROM games 
    WHERE EXISTS (SELECT COUNT(filename) 
         FROM banners 
         WHERE banners.keyvalue = games.id 
          AND banners.filename LIKE '%front%' 
         HAVING COUNT(filename)>1) 
+0

+1也許比我自己的答案更快,應該做一點測試...... – krtek 2011-05-26 20:15:45