2013-08-05 2 views
0

Я использую стандартную схему мира, которая поставляется с MySQL Workbench. Сначала я попробовал этот запрос, чтобы дать мне все города в Соединенных Штатах; однако я продолжал получать одну строку нулевых записей внизу.Попытка понять вывод нескольких похожих запросов

select * 
from city 
where CountryCode = 'USA'; 

Я искал решение и нашел MySQL SELECT only not null values. Итак, следующий я пробовал это:

select * 
from city 
where Name is not null and CountryCode = 'USA'; 

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

select Name 
from city 
where CountryCode = 'USA'; 

к моему удивлению, это сработало отлично, и без меня, чтобы проверить null.

Так что мой вопрос два раза:

  • Почему мой второй подход дает мне ряд nulls в нижней части (также, как это исправить), и
  • Почему последний подход не дайте мне null внизу?

EDIT: Дополнительная информация
Кроме того, не уверен, если это важно, но, несмотря на то, что первые два запроса, возвращающего строку с nulls в нижней части, для всех трех запросов, я получил то же самое количество возвращенных строк.

Вот вывод из первых двух запросов: first two queries

Вот выход из последнего:
enter image description here

+2

Мое предположение - это строка с нулевым значением, которая не находится в наборе результатов.Вероятно, он добавлен клиентом GUI по вашему выбору, чтобы добавить новые строки. – Vatev

+0

@Vatev Интересно. ** Почему бы ему не появиться в последнем запросе? ** Как я уже сказал, не уверен, что вы знакомы с ним, но я использую MySQL Workbench. –

+0

Не могли бы вы скриншот результатов? Как вы определили, что последняя запись «null»? – eggyal

ответ

2

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

Ваш последний запрос не является updatabale, поэтому он не будет отображаться с последней «пустой» строкой.

+0

Между ними нет никакой разницы. Обновляемые запросы ничего не определяют MySQL. –

+0

Ну, может быть, нет никакой разницы между ними, но, в зависимости от ограничений таблицы City, один и тот же набор запросов в SQL SERVER может давать такие результаты, когда обновляемый запрос отображает «новую» строку, в то время как другой отобразите эту строку. –

+0

Учитывая, что звездочка появляется на краю результатов, я считаю, что это правильный ответ. +1 – eggyal

0

о вашем втором запросе .. Когда вы cheking для вашей области нету никакой ценности, вы должны cheking для этого поля не пусто КАК ЭТО:

SELECT * FROM `city` WHERE name <> '' AND CountryCode = 'USA' 

в последнем запросе при выборе поля Поодиночке затем вы множества и в математике не получить нулевое или пустое значение , как это в наборе в математике есть не отличается от

а = {0,1,2} и в = {, 0, 1, 2}, поэтому, когда вы выберете столбец Singly, у вас есть набор, t пустым значением или нулевым значением, потому что его не определено в наборе

+0

Не уверен, что я понимаю, о чем вы говорите. –

+0

я отредактировал свой ответ, теперь подождите несколько минут ок? –

+0

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