如何计算5至6列中的另一个表中使用的一个表的主键?如何计算另一个表中的一个表的主键?
如果table1
具有在table2
应用于柱d1
,d2
,d3
,d4
主键srno
。
我想统计table2
中使用srno=1,2,3,4
...等等的次数。
有谁知道该怎么做?
如何计算5至6列中的另一个表中使用的一个表的主键?如何计算另一个表中的一个表的主键?
如果table1
具有在table2
应用于柱d1
,d2
,d3
,d4
主键srno
。
我想统计table2
中使用srno=1,2,3,4
...等等的次数。
有谁知道该怎么做?
下面的查询将返回的次数列D1,D2,D3和D4在表2(更新)中使用的每个值:
SELECT table1.srno, SUM(cnt) FROM
table1,
(SELECT d1 AS srno, COUNT(d1) AS cnt FROM table2 GROUP BY d1
UNION ALL
SELECT d2 AS srno, COUNT(d2) AS cnt FROM table2 GROUP BY d2
UNION ALL
SELECT d3 AS srno, COUNT(d3) AS cnt FROM table2 GROUP BY d3
UNION ALL
SELECT d4 AS srno, COUNT(d4) AS cnt FROM table2 GROUP BY d4) AS cnt_tbl
WHERE table1.srno = cnt_tbl.srno
GROUP BY table1.srno
尝试拨弄here.
如果”只重新计算一个特定主键(例如1),然后尝试
SELECT SUM(cnt) FROM
(SELECT COUNT(*) AS cnt FROM table2 WHERE d1 = 1
UNION ALL
SELECT COUNT(*) AS cnt FROM table2 WHERE d2 = 1
UNION ALL
SELECT COUNT(*) AS cnt FROM table2 WHERE d3 = 1
UNION ALL
SELECT COUNT(*) AS cnt FROM table2 WHERE d4 = 1) AS cnt_tbl
小提琴here。
或者没有UNION一个更优雅的解决方案:
SELECT SUM(cnt) FROM
(SELECT ((d1=1) + (d2=1) + (d3=1) + (d4=1)) AS cnt
FROM table2
WHERE d1 = 1 OR d2= 1 OR d3 = 1 OR d4 = 1) AS cnt_tbl
(Fiddle)
我认为你需要'UNION ALL',否则重复会被压制。 –
哦,是的,你是对的,谢谢 – Mifeet
srno table1在多列中使用。以上代码是针对特定记录的,bt记录可以是多个。 – user2338384
你说的 “表” 这里是什么意思?这是一个SQL问题吗? – Bergi
您的问题完全基于SQL,因此请提供您正在使用的数据库(mysql或...)。还应该是表1中所有记录的计数,还是只针对特定索引? –
是的,它的SQL问题。 – user2338384