首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在HeidiSQL中创建一个非常特定的列

问在HeidiSQL中创建一个非常特定的列
EN

Stack Overflow用户
提问于 2015-04-24 12:27:07
回答 2查看 1.7K关注 0票数 1

我一直试图用HeidiSQL建立一个小型数据库,但我偶然发现了一个问题。我想在某个表中添加一个列,该列计算包含某个值的另一个表中的列数量。我尝试过设置一个默认值,输入一个如下所示的自定义值

代码语言:javascript
复制
    SELECT COUNT(LidID) AS AantalSchepen FROM SCHIP WHERE SCHIP.LidID=LID.LidID

尽管LidID是列的名称,但我希望计算行数,其中包含表芯片中的值与表盖子中的值相同。LidID值是表盖的主键,因此在逻辑上是表芯片中的外键。

但是,当我在自定义默认值字段中输入此语句时,它会告诉我默认值无效。我所做的是完全不可能的,还是我的SQL语句有缺陷?

编辑:数据库的目的是成为网站上表格中显示的信息来源。正如我在以前的答复中所读到的,我在这里试图做的事情是完全不可能的,所以另一种解决方案是.?

EN

回答 2

Stack Overflow用户

发布于 2015-04-24 12:46:44

通常,不能添加“运行查询”的默认值。这可能取决于数据库,但我想不出支持此功能的数据库。

您可以做的是使用视图访问数据:

代码语言:javascript
复制
create view v_lid as
    select l.*,
           (select count(*)
            from SCHIP s
            where s.LidID = l.LidID
           ) as AantalSchepen
    from lid l;

然后,当您访问视图时,您将获得该视图的最新值。

注意:这与“缺省”值略有不同,该值将在创建行时输入值。如果你真的想要的话,你需要一个扳机。或者,也许有一些日期逻辑会得出相同的值。

票数 0
EN

Stack Overflow用户

发布于 2015-12-10 09:50:39

在MySQL 5.7.6和MariaDB 5.2上,表可以有虚拟列。MariaDB称它为虚拟,在MySQL中称为生成。两者的意思是相同的,而且语法也很相似。HeidiSQL的表编辑器支持创建这样的虚拟列。示例创建代码:

代码语言:javascript
复制
CREATE TABLE table1 (
 a INT NOT NULL,
 b VARCHAR(32),
 c INT AS (a mod 10) VIRTUAL
)

不幸的是,虚拟列不支持子查询,这就是为什么所有这些都无助于COUNT(*)查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29847555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档