2015-10-28 2 views
0

У меня есть таблица с повторяющимися записями:Может ли запрос MySQL выполнить что-то вроде управления потоком?

|User|Product| 
-------------- 
|John| apple | 
|John| orange| 
|Tim | apple | 
|Tom | grape | 
|Kath| orange| 

Я хочу, чтобы выбрать пользователя, которые имеют оранжевый цвет, но я хочу, чтобы исключить пользователей, которые вводятся более одного раза. Обычно я думаю в коде, поэтому моя ссылка - это оператор if, но есть простой способ сделать это в запросе. Вот логика в псевдокоде:

foreach row 
    if Product = orange 
    if User not in userList && not in duplicateList 
     userList += row.User // add User to the userList 
    else if User in userList 
     remove User from userList 
     duplicateList += row.User 

Пожалуйста, сообщите, если я могу улучшить заголовок вопроса.

+0

Основываясь на этом входе обеспечивают требуемый выход. Также укажите логику, почему вы хотите уничтожить Джона и не хотите уничтожать Кэт. – gandra404

+0

Похоже, что проблема XY – lad2025

+0

@ lad2025 определенно может быть, я обычно не строю запросы, и я определенно мог бы использовать неправильный инструмент, если это то, что вы имеете в виду. – icicleking

ответ

1

Update
попробовать это:

SELECT Tab.`User` 
FROM Tab 
LEFT JOIN (SELECT `User`, COUNT(Product) 
      FROM Tab 
      GROUP BY `User` 
      HAVING COUNT(Product) > 1) AS Tab2 
ON Tab.`User` = Tab2.`User` 
WHERE Product LIKE "Orange" 
AND Tab2.`User` IS NULL 
+1

Я цитирую 'user', потому что это ключевое слово – lad2025

+0

yeah для редактирования –

+1

Спасибо @MattiaCaputo, вот что я искал. Теперь мне просто нужно присоединиться к другой таблице ... – icicleking

Смежные вопросы