gpt4 book ai didi

sqlite - 在使用连接表在 sqlite 中执行选择时,别名列具有空值

转载 作者:行者123 更新时间:2023-12-03 19:40:55 28 4
gpt4 key购买 nike

我正在尝试将 sqlite 中的两个表与其中一列的别名连接起来,但是当我为该列设置别名时,它返回 null。

我有两张 table ,像这样:

sqlite> SELECT * FROM series;
_id = 1
name = Castle
type = show
who = dan
disabled = 0

sqlite> SELECT * FROM series_meta;
meta_id = 1
series_id = 1
meta_name = year
meta_type = int
meta_text =
meta_int = 2009

现在,我尝试以下查询: SELECT _id, name, type, who, disabled, y.meta_int AS year FROM series LEFT JOIN series_meta AS y ON _id=y.series_id AND y.meta_name="year";我得到:
     _id = 1
name = Castle
type = show
who = dan
disabled = 0
year =

但是如果我去掉列别名( SELECT _id, name, type, who, disabled, y.meta_int FROM series LEFT JOIN series_meta AS y ON _id=y.series_id AND y.meta_name="year"; ),我会得到预期的结果:
     _id = 1
name = Castle
type = show
who = dan
disabled = 0
meta_int = 2009

我已经在 Windows 7 上使用 sqlite 3.8.8.2 进行了尝试。我也使用 python 进行了尝试,结果完全相同。删除表别名也不会改变任何东西。

有没有办法让它与列别名一起使用?

最佳答案

当然你可以使用尽可能多的列别名,你实际上在这里遇到了一个不同的问题,这是 year 的用法作为字段名。

如果 y.meta_int 被命名为 year结果将是 (null) ,而任何其他名称都可以使用:

SELECT _id, name, type, who, disabled, y.meta_int tyear
FROM series
LEFT JOIN series_meta AS y ON _id=y.series_id AND y.meta_name="year";

没有加入但在这里的结果相同。但不同的是,如果在这里使用“年份”作为字段名称,实际上根本不会得到任何结果。任何其他名称都可以:
SELECT _id, name, type, who, disabled, y.meta_int AS m_year
FROM series, series_meta AS y
WHERE _id=y.series_id AND y.meta_name="year";

希望这可以帮助!

关于sqlite - 在使用连接表在 sqlite 中执行选择时,别名列具有空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29499972/

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