Предложение WHERE только IF NOT NULL
Мне нужна помощь с моим SELECT
.
Я получил поле, которое может быть NULL
, и в нем хранится внешний ключ.
SELECT * FROM beerImage WHERE beerBRewID = brewID AND beerBrandID = beerID <--- this can be NULL
Итак, если он NULL
ничего не происходит.
Как проверить, есть ли beerID
NOT NULL
, поэтому я могу использовать "beerBrandID = beerID"
?
Ответы
Ответ 1
Если вы хотите включить записи, в которых нет совпадений, вам потребуется внешнее соединение
SELECT beer.id AS beerID,
beer.barrelID AS barrelID,
beer.imageID AS imageID,
beer.title AS title,
beer.map AS map,
beer.longitude AS longitude,
beer.latitude AS latitude,
brand.name AS brandName,
brew.type AS brewType,
image.name AS imageName,
variation.name AS variationName
FROM brand, brew, image, beer
LEFT OUTER JOIN variation ON variation.ID = beer.VariationID
WHERE beer.id = %s
AND md5(beer.memberID) = %s
AND beer.review = 1
AND brand.ID = beer.brandID
AND brew.ID = beer.brewID
AND image.ID = beer.imageID
Ответ 2
Вам, вероятно, понадобится что-то вроде этого:
Первый пример:
SELECT * FROM beerImage WHERE beerBRewID = brewID AND (beerID IS NULL OR beerBrandID = beerID)
Второй пример:
SELECT * FROM beerImage WHERE beerBRewID = brewID AND beerID IS NOT NULL AND beerBrandID = beerID
Первый пример позволит вам показывать записи, в которых есть идентификатор пива id вместе с пивом, пивоBrandID равно пиридическому (оба).
Второй возвращает точно пиво, которое соответствует пивуBrandID (исключая пилюли NULL).
Ответ 3
Чтобы проверить значение null/not null, используйте IS NULL/IS NOT NULL
AND beerID IS NOT NULL
Ответ 4
Вы можете использовать функции сравнения "IS NULL" или "IS NOT NULL" MySQL.
Подробнее об этом читайте здесь:
http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html
http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_is-null
Ответ 5
Как насчет использования с оператором CASE
в where where clause
WHERE
CASE WHEN beer.id IS NOT NULL
THEN beer.brand_id = 12345
ELSE TRUE
END