我有两个表。
Name: `table1`
name d1 d2 d3 d4 d5
Tapan 2 0 3 8 0
another table : `table2`
name c1 c2 c3 c4 c5 c6
Tapan 12 14 0 0 17 0
两个表中都有 50 多列。 如何获得如下报告:
name - Tapan
d1 - 2
d3 - 3
d4 - 8
c1 - 12
c2 - 14
c5 - 17
total - 56
我未能为值>0 且名称 = 'Tapan' 的报告创建 sql 查询
SELECT a.*, b.*
FROM table1 a
INNER JOIN table2 b
ON a.name = b.name
我需要获取列值大于 0
最佳答案
如果您将表格重新设计成这样会更好:
表 1
:
Name Dnum Dval
Tapan 1 2
Tapan 2 0
Tapan 3 3
Tapan 4 8
Tapan 5 0
表 2
:
Name Cnum Cval
Tapan 1 12
Tapan 2 14
Tapan 3 0
Tapan 4 0
Tapan 5 17
Tapan 6 0
然后你可以这样查询:
SELECT CONCAT('d', Dnum) AS name, Dval AS Tapan
FROM table1
WHERE Name = 'Tapan' AND Dval > 0
UNION ALL
SELECT CONCAT('c', Cnum) AS name, Cval AS Tapan
FROM table2
WHERE Name = 'Tapan' AND Cval > 0
您也可以像这样组合两个表:
Name Prefix Num Val
Tapan d 1 2
Tapan d 2 0
Tapan d 3 3
Tapan d 4 8
Tapan d 5 0
Tapan c 1 12
Tapan c 2 14
Tapan c 3 0
Tapan c 4 0
Tapan c 5 17
Tapan c 6 0
那么查询是:
SELECT CONCAT(prefix, num) AS name, val AS Tapan
FROM yourTable
WHERE name = 'Tapan' AND val > 0
关于mysql - 在mysql中选择值大于0的列和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47322429/