我有一张桌子可以说
表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?
答案 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语句轻松完成。