WHERE 子句中的 ISNULL(value, 0) MYSQL
ISNULL(value, 0) in WHERE clause MYSQL
我有这个请求:
SELECT sc.no, scl.quantite, scl.description, scl.poids, scl.prix, sl_ref.refsl, sl_ref.codetva, sl_ref.tauxtva, sl_ref.compte
FROM shop_commande
AS sc, shop_commande_ligne AS scl, selectline_ref AS sl_ref
WHERE sc.id = scl.shop_commande_id
AND sl_ref.refshop = ISNULL(scl.shop_article_id, 0)
AND sc.id NOT IN (SELECT id_command FROM selectline_flag)
有时,在sl_shop_article_id中,有一个NULL值。我想要的是用 0 替换它,所以子句:
sl_ref.refshop = scl.shop_article_id
即使 scl.shop_article_id 为 NULL, 也可以工作。为此,我尝试使用 ISNULL 函数,但它使请求出错,我得到了错误:
1582 - 调用本机函数时参数计数不正确 'ISNULL'
如何使用它?
SELECT
sc.no
, scl.quantite
, scl.description
, scl.poids
, scl.prix
, sl_ref.refsl
, sl_ref.codetva
, sl_ref.tauxtva
, sl_ref.compte
FROM shop_commande
AS sc, shop_commande_ligne AS scl, selectline_ref AS sl_ref
WHERE sc.id = scl.shop_commande_id
AND sl_ref.refshop = IFNULL(scl.shop_article_id, 0)
AND sc.id NOT IN (SELECT id_command FROM selectline_flag)
我相信您正在尝试使用 IFNULL()
功能。如果您将 ISNULL
替换为 IFNULL
应该可以修复您的查询。
我建议您更进一步,使用 COALESCE()
而不是 IFNULL()
,因为 COALESCE()
是 SQL 标准的一部分(而 IFNULL()
不是)。
SELECT sc.no, scl.quantite, scl.description, scl.poids,
scl.prix, sl_ref.refsl, sl_ref.codetva, sl_ref.tauxtva, sl_ref.compte
FROM shop_commande
AS sc, shop_commande_ligne AS scl, selectline_ref AS sl_ref
WHERE sc.id = scl.shop_commande_id
AND sl_ref.refshop = COALESCE(scl.shop_article_id, 0)
AND sc.id NOT IN (SELECT id_command FROM selectline_flag)
我有这个请求:
SELECT sc.no, scl.quantite, scl.description, scl.poids, scl.prix, sl_ref.refsl, sl_ref.codetva, sl_ref.tauxtva, sl_ref.compte
FROM shop_commande
AS sc, shop_commande_ligne AS scl, selectline_ref AS sl_ref
WHERE sc.id = scl.shop_commande_id
AND sl_ref.refshop = ISNULL(scl.shop_article_id, 0)
AND sc.id NOT IN (SELECT id_command FROM selectline_flag)
有时,在sl_shop_article_id中,有一个NULL值。我想要的是用 0 替换它,所以子句:
sl_ref.refshop = scl.shop_article_id
即使 scl.shop_article_id 为 NULL,也可以工作。为此,我尝试使用 ISNULL 函数,但它使请求出错,我得到了错误:
1582 - 调用本机函数时参数计数不正确 'ISNULL'
如何使用它?
SELECT
sc.no
, scl.quantite
, scl.description
, scl.poids
, scl.prix
, sl_ref.refsl
, sl_ref.codetva
, sl_ref.tauxtva
, sl_ref.compte
FROM shop_commande
AS sc, shop_commande_ligne AS scl, selectline_ref AS sl_ref
WHERE sc.id = scl.shop_commande_id
AND sl_ref.refshop = IFNULL(scl.shop_article_id, 0)
AND sc.id NOT IN (SELECT id_command FROM selectline_flag)
我相信您正在尝试使用 IFNULL()
功能。如果您将 ISNULL
替换为 IFNULL
应该可以修复您的查询。
我建议您更进一步,使用 COALESCE()
而不是 IFNULL()
,因为 COALESCE()
是 SQL 标准的一部分(而 IFNULL()
不是)。
SELECT sc.no, scl.quantite, scl.description, scl.poids,
scl.prix, sl_ref.refsl, sl_ref.codetva, sl_ref.tauxtva, sl_ref.compte
FROM shop_commande
AS sc, shop_commande_ligne AS scl, selectline_ref AS sl_ref
WHERE sc.id = scl.shop_commande_id
AND sl_ref.refshop = COALESCE(scl.shop_article_id, 0)
AND sc.id NOT IN (SELECT id_command FROM selectline_flag)