2014-11-28 3 views
1

Моя структура таблицы выглядит следующим образомMySQL выбрать из, где выполняется условие

ProductID | Image | Default 
1   1.jpg  N 
1   2.jpg  Y 
1   3.jpg  N 
2   4.jpg  N 
2   5.jpg  N 
3   6.jpg  Y 
3   7.jpg  N 

Я пытаюсь получить возврат всех producID, где нет изображения по умолчанию нет «N», например, вышеуказанное должно возвращать productID 2. Извините, нет попытки кода, так как я не уверен, что делать вообще.

+0

Если в колонке 'Default' есть только' N' umn для * any * значений 'ProductID'? –

ответ

2

Group продуктом и выбрать только те, которые имеют ни default=Y

select productID 
from your_table 
group by productID 
having sum(`default` = 'Y') = 0 
+0

Это работает спасибо! , будет приниматься за 8 минут –

0

Попробуйте это:

SELECT t1.productID 
FROM yourtable t1 
WHERE NOT EXISTS(
    SELECT 'DEFAULT' 
    FROM yourtable t2 
    WHERE T2.productid = t1.productid 
    AND T2.`default` = 'Y' 
) 
-2

Если по умолчанию столбец в базе данных вы можете использовать:

Select * from mytabale where 'Default'='Y' 
-1
This SQL code does what you want: 

SELECT productID FROM 
    (SELECT productID, SUM(table.default = 'Y') AS Y_count 
    FROM table 
    GROUP BY productID) AS tbl 
WHERE Y_count = 0 
+0

Ответы на код-код не одобряются, добавьте краткое описание того, что делает этот запрос. –