基于真值表的SQL SELECT

弗雷德:

如何选择查找真值表要返回的列?我的数据:

| nam | X | Y |
| Bob | 2 | 5 |
| Jan | 1 | 6 |

查找表

| prop| SHOW |
| nam | true |
|  X  | false|
|  Y  | true |

有点像SELECT from data (columns which have "true" in lookup)导致:

| nam | Y |
| Bob | 5 |
| Jan | 6 |
nbk:

使用数据透视表

模式(MySQL v5.7)

CREATE TABLE tab1 (
  `nam` VARCHAR(3),
  `X` INTEGER,
  `Y` INTEGER
);

INSERT INTO tab1
  (`nam`, `X`, `Y`)
VALUES
  ('Bob', '2', '5'),
  ('Jan', '1', '6');

CREATE TABLE tab2 (
  `prop` VARCHAR(3),
  `SHOW` VARCHAR(5)
);

INSERT INTO tab2
  (`prop`, `SHOW`)
VALUES
  ('nam', 'true'),
  ('X', 'false'),
  ('Y', 'true');

查询#1

SELECT CONCAT ('SELECT ',GROUP_CONCAT(CONCAT('`',prop,'`')),' FROM tab1;') 
       INTO @sql 
FROM tab2 WHERE `SHOW` = 'true';

没有要显示的结果。


查询#2

PREPARE stmt FROM @sql;

没有要显示的结果。


查询3

EXECUTE stmt;

| nam | Y   |
| --- | --- |
| Bob | 5   |
| Jan | 6   |

没有要显示的结果。


在数据库小提琴上查看

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章