Подзапрос в SQL Server компактный выпуск

Надеюсь, это то, что вы ищете:

for (int i = 2; i < Integer.MAX_VALUE; i++) {
        for (int j = 2; j <= 20; j++) {
            if (i % j == 0) {
                System.out.println("i : "+i+" j : "+j);
                break;
            }
        }
    }
6
задан Kev 14 March 2009 в 08:44
поделиться

2 ответа

Мои единственные события в запросах с MySQL, но надо надеяться это достаточно подобно.

Ваш запрос выглядит странным для меня, потому что Ваш подзапрос находится в ИЗБРАННОМ пункте. Я никогда не видел, что прежде..., но по-видимому это поддерживается в MySQL. Обычно подзапрос входит после ОТ или ОСТАВЛЕННОЕ СОЕДИНЕНИЕ или СОЕДИНЕНИЕ.

Ваш пример достаточно прост, что Вы могли реализовать его с ЛЕВЫМ СОЕДИНЕНИЕМ:

SELECT C.guid, ..., COUNT(distinct D.id) as numprogs
FROM Computers AS C
LEFT JOIN ComputerData as D ON D.computer_id = C.id

В этом случае, ОСТАВЛЕННЫЙ СОЕДИНЕНИЕ корректный тип, соединяют с использованием, потому что, даже если нет никакой записи соответствия в таблице D для конкретной записи C, Ваш набор результатов будет все еще содержать это, запись C и numprogs просто будут нулем, как Вы ожидали бы.

Если Вы действительно хотите использовать подзапрос, попробуйте это:

SELECT C.guid, ..., S.numprogs
FROM Computers AS C
LEFT JOIN
(SELECT computer_id, COUNT(*) as numprogs
 FROM ComputerData GROUP BY computer_id) AS S
ON C.id=S.computer_id

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

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

5
ответ дан 8 December 2019 в 03:28
поделиться

Ограничение в SQL, который CE - то, что это не поддерживает подзапросы, которые возвращают скалярное значение. Подзапросы, которые возвращают набор, анализируются прекрасные.

Подзапрос в соединении в ответе Grayson возвращает набор, таким образом, это должно работать. Иногда скалярного подзапроса нельзя избежать в условии объединения. При помощи 'ВО' вместо '=', может быть обманут синтаксический анализатор.

См. мой ответ на этот вопрос.

24
ответ дан 8 December 2019 в 03:28
поделиться
Другие вопросы по тегам:

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