2
我有一个表测试器,它有一个主ID和一个外键,它引用了一个名为test的表的ID。Mysql计数,加入和双重连接
测试表有一个numAllowed列,表示有多少人可以参加此特定测试。
我想插入一个新的测试人员,其测试列只有在测试人员少于测试人员的情况下才引用相同的测试,而测试人员的测试人数不会超过该测试的数值。例如,测试人员“亚历克斯”只有在少于20人(已允许数量)已经服用/已服用的情况下才能进行“地理”测试。
此外,计数函数如何在像这样的查询中操作?它是只计算包含在连接中的列还是它在查询外的“范围”?它会返回该表中所有ID的计数吗?
insert into tester (test, createddate, ipaddress)
select
11, NOW(), xxx.xxx.xxx.xxx
from
dual
where exists
(select * from
test ts inner join
tester tr
on tr.test = ts.id
where ts.numAllowed - count(tr.id) > 0
and ts.id = '11')
你在“双”表中有什么? – fthiella
什么都没有,只要我知道,这是为了选择你自己的价值观。 –
不知道mySQL是否支持dual,但我确定你不能在WHERE子句中使用像count()这样的聚合函数。您需要对数据进行分组并使用HAVING子句。 – scraatz