基于真值表的sql选择

laawzig2  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(208)

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

| 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 |
cyej8jka

cyej8jka1#

使用数据透视表
架构(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   |

没有要显示的结果。
db fiddle视图

相关问题