【问题标题】:MySQL first select column based on parameter value and then value of columnMySQL首先根据参数值选择列,然后是列的值
【发布时间】:2014-02-21 02:54:33
【问题描述】:

我有一张桌子可以说

表 1

t_id A   B  C

100  1   1  0

101  1   0  1

102  1   1  0

现在我有输入参数 param0,首先我必须选择列(比如 B),然后使用 t_id 值(比如 101)我将选择该选定列的值(即 0)。

我想创建单个查询,因为我将在连接查询中使用它。

以上可以吗,如果可以的话怎么写sql呢?

【问题讨论】:

  • select B from table1 where t_id = 101

标签: mysql sql database


【解决方案1】:

在 MySQL 中,这很容易通过 case 语句完成:

select (case when @param0 = 'A' then A
             when @param0 = 'B' then B
             when @param0 = 'C' then C
        end) as val
from table t
where id = @t_id;

实际上,在几乎任何数据库中使用 case 语句最容易做到这一点。

【讨论】:

    【解决方案2】:

    这对 SQL 服务器有效。我不确定这是否适用于 mySQL 您可以通过取消透视数据然后使用 where 子句中的参数选择列和 tid 来轻松完成此操作 对于 MySql,您可能应该在 stackoverflow 上查看 this article

    SELECT Colvalue FROM (
    SELECT t_id, ColName, ColValue
    FROM 
       (SELECT t_id,A,B,C FROM tablename) t
    UNPIVOT
       (Colvalue FOR ColName IN  (A,B,C) )AS unpvtt) 
    WHERE t_id=@paramTid AND Colname=@paramColname
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-03
      • 2022-07-06
      • 2018-09-24
      • 1970-01-01
      • 2014-09-01
      • 2020-06-23
      • 1970-01-01
      • 2023-03-25
      相关资源
      最近更新 更多