首页 > 解决方案 > 如果存在 sql SELECT

问题描述

我正在尝试运行这个:

IF EXISTS (SELECT id_commande FROM historique WHERE id_commande = 57 AND device = 70635601)
BEGIN
    SELECT id_commande FROM historique WHERE id_commande = 57 AND device = 70635601
END
ELSE
BEGIN
    SELECT (MAX(id_commande)+1) FROM historique
END

我希望你能明白我想做什么。我的问题是它总是给我回报Erreur dans la requête (1064): Syntax error near 'BEGIN SELECT 1 END ELSE BEGIN SELECT 2 END' at line 2

感谢你们对我的帮助 !

标签: sqlif-statementselectmariadb-10.3

解决方案


您可以不EXISTS使用COALESCE()

SELECT 
  COALESCE(
    (SELECT id_commande FROM historique WHERE id_commande = 57 AND device = 70635601),
    (SELECT MAX(id_commande) + 1 FROM historique)
  )

我假设第一个查询将只返回 1 行。


推荐阅读