Вот, пожалуйста:
SELECT
DISTINCT(`ID`)
FROM
`TABLE`
WHERE
`subject` IN ('science', 'maths');
Обновлено:
CREATE TABLE test (
id INT ,
subject varchar(30)
);
INSERT INTO test (id, subject) VALUES
(1,'science'),
(1,'maths'),
(2,'maths'),
(3,'science'),
(4,'science'),
(4,'biology'),
(4,'maths'),
(5,'biology'),
(5,'economics');
SELECT
DISTINCT(a.id)
FROM
test a
LEFT JOIN test b on b.id=a.id AND b.subject IN ('science', 'maths')
WHERE
a.subject='science' AND b.subject='maths';
/*output: 1, 4*/
Надеюсь, это поможет,
В Java нет двоичных литералов, но я полагаю, что вы могли бы это сделать (хотя я не вижу в этом смысла):
int a = Integer.parseInt("10101010", 2);
Выполните поиск по запросу «синтаксис литералов Java» в Google, и вы найдете несколько записей.
Существует восьмеричный синтаксис (префикс числа с 0), десятичный синтаксис и шестнадцатеричный синтаксис с Префикс "0x". Но нет синтаксиса для двоичной записи.
Некоторые примеры:
int i = 0xcafe ; // hexadecimal case
int j = 045 ; // octal case
int l = 42 ; // decimal case
Чуть более неудобный ответ:
public class Main {
public static void main(String[] args) {
byte b = Byte.parseByte("10", 2);
Byte bb = new Byte(b);
System.out.println("bb should be 2, value is \"" + bb.intValue() + "\"" );
}
}
который выводит [java] bb должно быть 2, значение "2"
Ответ Эда Свангрена
public final static long mask12 =
Long.parseLong("00000000000000000000100000000000", 2);
работает нормально. Я использовал long
вместо int
и добавил модификаторы, чтобы прояснить возможное использование в качестве битовой маски. Однако у этого подхода есть два неудобства.
Я могу предложить альтернативный подход
public final static long mask12 = 1L << 12;
Это выражение делает очевидным, что 12-й бит равен 1 (счет начинается с 0, справа налево); и когда вы наводите курсор мыши, в Eclipse появляется всплывающая подсказка
long YourClassName.mask12 = 4096 [0x1000]
. Вы можете определить более сложные константы, например:
public final static long maskForSomething = mask12 | mask3 | mask0;
или явно
public final static long maskForSomething = (1L<<12)|(1L<<3)|(1L<<0);
. Значение переменной maskForSomething
по-прежнему будет доступно в Eclipse во время разработки.
В Java 7:
int i = 0b10101010;
В старых версиях Java нет двоичных литералов (альтернативы см. В других ответах).
Если вы хотите возиться с большим количеством двоичных файлов, вы можете определить некоторые константы:
public static final int BIT_0 = 0x00000001;
public static final int BIT_1 = 0x00000002;
и т. Д.
или
public static final int B_00000001 = 0x00000001;
public static final int B_00000010 = 0x00000002;
public static final int B_00000100 = 0x00000004;