Как я Связываю все наборы результатов в MySQL?

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

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
21
задан wolφi 6 June 2018 в 07:55
поделиться

7 ответов

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

SELECT A,B,C, "query 1" as origin FROM table WHERE field LIKE 'query%'
UNION
SELECT A,B,C, "query 2" as origin FROM table WHERE field LIKE '%query'
UNION
SELECT A,B,C, "query 3" as origin FROM table WHERE field LIKE '%query%'
GROUP BY origin, B ORDER BY origin, B ASC LIMIT 5
16
ответ дан 29 November 2019 в 21:38
поделиться

Добавьте дополнительный столбец с трудно кодированными значениями, которые Вы будете использовать для сортировки полного набора результатов, как так:

SELECT A,B,C,1 as [order] FROM table WHERE field LIKE 'query%'
UNION
SELECT A,B,C,2 as [order] FROM table WHERE field LIKE '%query'
UNION
SELECT A,B,C,3 as [order] FROM table WHERE field LIKE '%query%'
GROUP BY B ORDER BY [order] ASC, B ASC LIMIT 5
7
ответ дан 29 November 2019 в 21:38
поделиться

Можно ли сделать это как подвыбор, что-то как

SELECT * FROM (
    SELECT A,B,C FROM table WHERE field LIKE 'query%'
    UNION
    SELECT A,B,C FROM table WHERE field LIKE '%query'
    UNION
    SELECT A,B,C FROM table WHERE field LIKE '%query%'
) ORDER BY B ASC LIMIT 5
2
ответ дан 29 November 2019 в 21:38
поделиться

ВЫБЕРИТЕ отличный a, b, c ОТ (ВЫБЕРИТЕ A, B, C, 1 как o таблица FROM, ГДЕ поле КАК 'ВЫБОР ОБЪЕДИНЕНИЯ' % запроса A, B, C, 2 как o таблица FROM, ГДЕ поле КАК '%query' ВЫБОР ОБЪЕДИНЕНИЯ A, B, C, 3 как o таблица FROM, ГДЕ поле КАК '%query %'), ORDER BY o ПРЕДЕЛ ASC 5

был бы моим способом сделать его. Я не знаю, как это масштабируется.

я не понимаю

GROUP BY B ORDER BY B ASC LIMIT 5

, это применяется только к последнему ВЫБОРУ в объединении?

mysql на самом деле позволяет, Вы, чтобы сгруппироваться столбцом и все еще не сделать агрегируетесь на других столбцах?

РЕДАКТИРОВАНИЕ: aaahh. Я вижу, что mysql на самом деле делает. Это - специальная версия ОТЛИЧНЫХ (b) или что-то. Я не хотел бы пытаться быть экспертом по той области:)

1
ответ дан 29 November 2019 в 21:38
поделиться

Если нет вида, который имеет смысл заказывать им, Вы требуете, делаете не объединение, результаты вместе - просто возвращают 3 отдельных recordsets и соглашение с ними соответственно в Вашем уровне данных.

0
ответ дан 29 November 2019 в 21:38
поделиться

Я в конечном счете (смотрящий на все предложения) пришел к этому решению, это - определенный компромисс между тем, в чем я нуждаюсь и время.

SELECT * FROM 
  (SELECT A, B, C, "1" FROM table WHERE B LIKE 'query%' LIMIT 3
   UNION
   SELECT A, B, C, "2" FROM table WHERE B LIKE '%query%' LIMIT 5)
AS RS
GROUP BY B
ORDER BY 1 DESC

это поставляет 5 общих количеств результатов, виды из четвертого "столбца" и дает мне, в чем я нуждаюсь; естественный набор результатов (его прибытие через Ajax) и подстановочный набор результатов после прямо после.

:)

/ член парламента

0
ответ дан 29 November 2019 в 21:38
поделиться

Существует два варианта ОБЪЕДИНЕНИЯ.

'UNION' and 'UNION ALL'

В большинстве случаев то, что Вы действительно хотите сказать, является ОБЪЕДИНЕНИЕМ ВСЕ, поскольку оно не делает дублирующегося устранения (Думайте SELECT DISTINCT) между наборами, которые могут привести к довольно мало сбережений с точки зрения времени выполнения.

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

0
ответ дан 29 November 2019 в 21:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: