Как получить всех пользователей, связанных с группой, и ввести с помощью GROUP BY - PullRequest
0 голосов
/ 09 октября 2011

Я получил таблицу с именем пользователя, группой пользователей и типом пользователя.

A 0 0
B 0 1
C 1 2
D 2 2

Теперь я хочу что-то вроде

, чтобы получить всех пользователей, где группа 0 или 1, и введите2

Я использую:

SELECT * FROM table WHERE usergroup= 0 OR 1 AND usertype=2 GROUP BY usergroup

Я ожидаю, что он вернет имя пользователя C, но странным образом он возвращает A,C,D Что я делаю не так?

Ответы [ 3 ]

2 голосов
/ 09 октября 2011

Я собираюсь игнорировать это GROUP BY.


SELECT * FROM table WHERE usergroup= 0 OR 1 AND usertype=2

Что я делаю не так?

Во-первых, у вас есть проблемы с приоритетом;Ваш SQL-запрос эквивалентен:

SELECT * FROM table WHERE usergroup = 0 OR (1 AND usertype=2)

Для ясности используйте скобки:

SELECT * FROM table WHERE (usergroup = 0 OR 1) AND usertype=2

Проблема все еще в том, что логические операторы просто не работают так: 0 OR 1 - это выражение, которое оценивается как 1.

Вы должны повторить то, с чем сравниваете:

SELECT * FROM table WHERE (usergroup = 0 OR usergroup = 1) AND usertype=2

Однако это можно сократить так:

SELECT * FROM table WHERE usergroup IN (0, 1) AND usertype=2
1 голос
/ 09 октября 2011
SELECT * FROM table WHERE usergroup IN (0,1) AND usertype = 2
1 голос
/ 09 октября 2011

Ваш SQL должен быть:

SELECT * 
FROM table 
WHERE (usergroup = 0 OR usergroup = 1) 
  AND (usertype = 2)

Почему вам нужен «GROUP BY», пока неясно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...