gpt4 book ai didi

mysql - 如何让mysql表达式返回整数值?

转载 作者:行者123 更新时间:2023-11-29 18:25:11 25 4
gpt4 key购买 nike

我在 mysql 中有两个表,如下所示:

Table1 包含问题

qid  tid  qtype 
101 1 1
102 1 2
103 1 3
104 1 4

这里 qtype 是问题类型,其中 qtype 1 和 2 接受数值,3 和 4 接受字符串。我已将 qtype 声明为 varchar 列。

表2给出了答案

sid qid  qtype qanswer
1 101 1 10
1 102 2 20
1 103 3 o1
1 104 4 o2

每个“sid”的每个问题都有行。

我使用以下查询以下面的方式选择了数据:

select a.sid, MAX(CASE WHEN (a.qid = 101) THEN if(a.qtype in(1,2),cast(a.qanswer as unsigned),a.qanswer) ELSE NULL END) AS '101' ,
MAX(CASE WHEN (a.qid = 102) THEN if(a.qtype in(1,2),cast(a.qanswer as unsigned),a.qanswer) ELSE NULL END) AS '102' ,
MAX(CASE WHEN (a.qid = 103) THEN if(a.qtype in(1,2),cast(a.qanswer as unsigned),a.qanswer) ELSE NULL END) AS '103' ,
MAX(CASE WHEN (a.qid = 104) THEN if(a.qtype in(1,2),cast(a.qanswer as unsigned),a.qanswer) ELSE NULL END) AS '104' from Table2 a join Table1 b on a.qtype = b.qtpe where b.tid = 1

sid 101 102 103 104
1 10 20 o1 o2
2 30 15 o2 o1

我想选择 qtype 1 和 2 作为整数,因此我在查询中使用了以下语句:

if(qtype in (1,2),cast(qanswer as unsigned),qanswer)

我没有得到所需的 qtype 1 和 2 的答案。我引用了这个question

我还尝试了 convert 而不是强制转换,但得到了相同的结果。如何将 qtype 1 和 2 转换为整数?

如何从 mysql 表达式返回整数值。

最佳答案

这不是一个声明:

if(qtype in (1, 2), cast(qanswer as unsigned), qanswer)

这是一个表达式。表达式返回单一类型的标量值。 MySQL 需要决定返回的类型是 unsigned 还是 varchar,因为它必须为整个表达式选择一个。

MySQL 似乎会选择字符串类型。

关于mysql - 如何让mysql表达式返回整数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46253980/

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