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