【问题标题】:Sqlite select query using result value from another select query from another table使用来自另一个表的另一个选择查询的结果值的 Sqlite 选择查询
【发布时间】:2020-01-05 23:22:03
【问题描述】:

我已经检查了类似的答案,但没有找到我要找的东西。

我有一个表格,我可以从中得到如下值:

SELECT value1 from table1;
b3 

我需要将此结果用于下一个查询:

SELECT b1,b2,b3,b4,b5,(SELECT value from table1) from table2;
15.26|13.14|11.08|9.05|7.05|b3
15.31|13.2|11.14|9.11|7.12|b3
15.37|13.26|11.2|9.18|7.18|b3
15.43|13.32|11.26|9.24|7.25|b3

问题是 SELECT 语句根据以下结果返回 b3 而不是 b3 值(最后一列是从选择中返回 b2)

SELECT b1,b2,b3,b4,b5,(SELECT value from table1) from table2;
15.26|13.14|11.08|9.05|7.05|11.08
15.31|13.2|11.14|9.11|7.12|11.14
15.37|13.26|11.2|9.18|7.18|11.2
15.43|13.32|11.26|9.24|7.25|11.26

知道如何解决这个问题吗?非常感谢

【问题讨论】:

  • 在两个表格中显示您的数据以及您的预期结果。它的atm不清楚
  • 您看到的结果b3value1 列的值,但b1,b2,b3 是值为100,200,13.23 的列的名称。这是两种不同的东西。
  • 对不起,我的问题,我的问题格式错误,我添加了一些说明。请让我知道这是否清楚

标签: sqlite select


【解决方案1】:

我怀疑你想要一个 CASE 表达式:

SELECT b1,b2,b3,b4,b5,
  CASE (SELECT value from table1) 
    WHEN 'b1' THEN b1
    WHEN 'b2' THEN b2
    WHEN 'b3' THEN b3
    WHEN 'b4' THEN b4
    WHEN 'b5' THEN b5
  END result  
FROM table2

但这仅在以下情况下有效:

SELECT value from table1

仅返回 1 行。
请参阅demo
结果:

| b1    | b2    | b3    | b4   | b5   | result |
| ----- | ----- | ----- | ---- | ---- | ------ |
| 15.26 | 13.14 | 11.08 | 9.05 | 7.05 | 11.08  |
| 15.31 | 13.2  | 11.14 | 9.11 | 7.12 | 11.14  |
| 15.37 | 13.26 | 11.2  | 9.18 | 7.18 | 11.2   |
| 15.43 | 13.32 | 11.26 | 9.24 | 7.25 | 11.26  |

【讨论】:

  • 这按预期工作,非常感谢您的帮助。是否可以不指定所有列? b1-b5。如果我们有 100 列,如何以有效的方式完成?
  • 'b3' 之类的字符串与b3 之类的列名之间没有直接链接,因此任何解决方案都必须枚举所有列。这是因为Table2的设计。
猜你喜欢
  • 1970-01-01
  • 2016-04-24
  • 1970-01-01
  • 1970-01-01
  • 2014-10-22
  • 2015-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多