gpt4 book ai didi

sqlite - SELECT 语句中的条件子查询

转载 作者:行者123 更新时间:2023-12-03 17:50:59 25 4
gpt4 key购买 nike

我试图在这里实现以下目标。

我有3张 table :

  • 项目
  • 成分

  • 我查询成分并根据结果,我想从块或项目中子查询或加入一些列。

    我设法在我的 select 语句中有条件地子选择 1 列( name ),但如果我想选择多于一列,例如 SELECT name, material_id ,我收到以下错误:

    Only a single result allowed for a SELECT that is part of an expression



    我在 SO 上看到了许多类似的案例,但无法做到这一点。
    SELECT
    `crafting_recipes`.`ingredient_id`, `crafting_recipes`.`ingredient_table`,
    CASE
    WHEN
    `crafting_recipes`.`ingredient_table` = 'blocks' THEN
    (SELECT `name` FROM `blocks` WHERE `id` = `crafting_recipes`.`ingredient_id`)
    ELSE
    (SELECT `name` FROM `items` WHERE `id` = `crafting_recipes`.`ingredient_id`)
    END
    FROM
    `crafting_recipes`
    WHERE
    `crafting_recipes`.`result_id` = 15 AND
    `crafting_recipes`.`result_table` = "blocks"

    由于不支持在子选择中选择多列,实现这一目标的正确方法是什么?

    最佳答案

    我会按照这些方式来避免重复的相关子查询:

    SELECT
    cr.`ingredient_id`,
    cr.`ingredient_table`,
    CASE
    WHEN
    cr.`ingredient_table` = 'blocks' THEN
    b.`name`
    ELSE
    i.`name`
    END as `name`
    FROM
    `crafting_recipes` cr
    LEFT JOIN `blocks` b on b.`id` = cr.`ingredient_id`
    LEFT JOIN `items` i on i.`id` = cr.`ingredient_id`
    WHERE
    cr.`result_id` = 15 AND
    cr.`result_table` = "blocks"

    关于sqlite - SELECT 语句中的条件子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4178231/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com