MySQL首先根据参数值选择列,然后选择列的值

时间:2014-01-29 10:50:24

标签: mysql sql database

我有一张桌子可以说

表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 for same?

2 个答案:

答案 0 :(得分:2)

这对SQL Server有效。我不确定这是否适用于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

答案 1 :(得分:2)

在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语句轻松完成。