使用IF或CASE和子查询选择mysql

时间:2017-04-04 13:56:20

标签: mysql conditional-statements

我有两张桌子:pf_rows

|  g1  |  g2  |  g3  |  g4  |
+------+------+------+------+
| foo1 | foo2 | foo3 | foo4 |
+------+------+------+------+

pf_seq

| lite | qty |
+------+-----+
|  1   |  12 |
+------+-----+
|  2   |  12 |
+------+-----+

我需要一个查询,该查询返回基于pf_rows的值pf_seq中的值。 例如:当pf_seq.lite=1时,结果为foo1,而pf_seq.lite=2则结果为foo2等。

1 个答案:

答案 0 :(得分:1)

如果两个表无关,则必须使用cross join

select  t2.lite,
        case
            when t2.lite = 1 then t1.g1
            when t2.lite = 2 then t1.g2
            /* other cases if needed */
            else null
        end as gx
from    pf_rows t1
cross join
        pf_seq t2

请注意,如果表包含大量行,则此类查询根本不会执行。