MySQL - 使用一个字段的值按名称定位另一个字段

时间:2011-02-04 11:10:16

标签: mysql variables if-statement

表用户包含字段ID,名称,水果,蔬菜,肉类 Table FruitType包含字段id,type,healthy,user 让我们假设用户看起来像这样:

1,马文,苹果,胡萝卜,猪肉
2,Zorlax,蓝莓,生菜,羊肉

..而FruitType表看起来像这样:

1,水果,是的,1 2,蔬菜,是的,2,

我想要的是能够加入它们,并在特定字段中搜索用户中的值,具体取决于FruitType中“type”字段的VALUE。例如,我希望能够做到这一点:

SELECT User.'type' FROM User 

LEFT JOIN FruitType ft ON (ft.user = User.id) etc.. conditions and so on...

基本上,我希望'type'部分取得FruitType表中'type'字段的值。实质上就像一个字段变量。

我希望我足够清楚。这是我现在正在研究的一个真实的例子,如果这看起来太混乱了,虽然真实的可能会造成更大的伤害:

  IF (trigger_by_date IS NOT NULL,
  date_add(books.trigger_by_date, INTERVAL trigger_by_date_add DAY),
  date_add(trigger_step_created_at, INTERVAL trigger_by_step_add DAY))
  as deadline

在这种情况下,trigger_by_date是变量。如果它不为null,只需使用其值作为字段标识符。

编辑:

为清楚起见:User中没有“type”列。示例查询中的“type”应替换为FruitType表中type的实际值。因此,如果条件产生了结果FruitType.type = fruit,我希望查询SELECT User.fruit。如果条件给了FruitType.type = veggies,我想查询SELECT User.veggies。我希望现在更清楚了。我基本上希望我选择的字段取决于FruitType中的类型。

2 个答案:

答案 0 :(得分:0)

您的描述非常令人困惑。在您发布的代码段中,您在说明中写了“... User.'type'From User”,您说User表中没有类型字段。不过,我的猜测是你试图从FruitType表中获取'type'字段。

这可能就是你要找的东西了     SELECT FruitType.type From FruitType ft JOIN User ON(ft.type = User.id)

答案 1 :(得分:0)

解决方案是使用几个高级子查询重写查询。