【问题标题】:create a complex variable in mysql在mysql中创建一个复杂的变量
【发布时间】:2012-12-05 12:10:12
【问题描述】:

我的 MySQL 语法有问题。我已经生成了一张包含真实飞机航班和假想飞机航班的表格:

Flight_ID 虚构 12345678 0 12345678 1 12345678 1 12345678 1 23456789 0 23456789 1 23456789 1 等等......

虚构航班与生成它们的真实航班具有相同的Flight_IDImaginary 列指示它是真实的 0 还是虚构的 1 飞行。

我需要创建一个名为Type 的新变量,用于指示它是真实航班,还是选项1、选项2、选项3……

我找不到正确的语法来创建这些 option1、option2、option3 模式。

【问题讨论】:

  • 什么是option1、option2、option3?
  • option1, option2等是我的新变量Type的模态,option1=first imaginary flight, option2=second imaginary flight等
  • 为什么不使用 int 值并计算 0,1,2,... 0 是实数,所有其他都是虚数与等级
  • 我该怎么做?将 0 用于真实飞行,1,2,3.... 用于虚构?所以它会像这样 0,1,2,3,4, 0,1,2,3,4,5,6, 0,1,2 等等?
  • 如何区分选项?或者,换一种说法,一个人如何确定哪个选项应该是哪个?或者没关系:在这种情况下,为什么要给它们编号?

标签: mysql variables select


【解决方案1】:

试试这个:

SELECT Flight_ID, Imaginary, IF(Imaginary=0, @img:=0, TRUE) ignoreThisCol, 
       IF(Imaginary=0, 'real flight', CONCAT('option',  @img:=@img+1)) flightType , 
       IF(Imaginary=0, @curFlight:=Flight_ID, TRUE) ignoreThisCol
FROM flights, (SELECT @curFlight:=0, @img:=0) a
ORDER BY Flight_ID, Imaginary

【讨论】:

  • 几乎成功了,只是它只推了option0。它看起来像这样: Flight_ID / Imaginary/ Flight_type 12345678 0 真实航班 12345678 1 个选项0 12345678 1 个选项0 12345678 1 个选项0 23456789 0 真实航班 23456789 1 个选项0 23456789 1 个选项0
  • 你在查询中有什么变化?
  • 只是航班表的名称 --> final
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-29
  • 2012-09-08
  • 1970-01-01
  • 1970-01-01
  • 2016-12-09
  • 2017-01-07
相关资源
最近更新 更多