18

我需要帮助我的SELECT.

我有一个可以存在的字段,NULL其中存储了一个外键。

SELECT * FROM beerImage WHERE beerBRewID = brewID AND beerBrandID = beerID <--- this can be NULL

所以如果什么NULL都没有发生。

我如何检查是否beerID可以NOT NULL使用"beerBrandID = beerID"

4

5 回答 5

17

你可能需要这样的东西:

第一个例子:

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

第一个示例将允许您显示 beerID 为 null 的记录以及 beerBrandID 等于 beerID 的啤酒(两者)。

第二个将准确返回与 beerBrandID 相对应的啤酒(不包括 NULL beerIDs)。

于 2012-08-15T14:52:15.207 回答
9

CASE在 where 子句中使用 with 语句怎么样

WHERE
CASE WHEN  beer.id IS NOT NULL 
    THEN beer.brand_id = 12345
    ELSE TRUE
END
于 2018-12-04T02:49:33.340 回答
2

如果要包含不匹配的记录,则需要外部联接

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 
于 2012-08-15T15:29:09.043 回答
1

要检查 null / not null,请使用 IS NULL / IS NOT NULL

AND beerID IS NOT NULL
于 2012-08-15T14:52:06.520 回答
0

您可以使用“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

于 2012-08-15T14:53:30.903 回答