如果你真的想編寫自己的(工作)查詢..
INSERT INTO groupdentlink (
f_dent_id, f_group_id, f_schedule_id
) SELECT
'$_POST[id]' f_dent_id,
'$groupid' f_group_id,
'$scheduleid' f_schedule_id
FROM DUAL
WHERE NOT EXISTS (
SELECT 1
FROM `groupdentlink`
WHERE
f_dent_id = '$_POST[id]' AND f_group_id = '$groupid'
LIMIT 1 -- will stop mysql to stop searching after first match
)
...但MySQL能夠處理所有這一切爲您服務!
你並不需要主鍵使MySQL處理這個適合你,你應該對合集中的兩列中添加一個UNIQUE
鍵約束。
查詢將唯一密鑰dent_group_uniq_key
添加到groupdentlink
。
ALTER TABLE groupdentlink ADD UNIQUE KEY `dent_group_uniq_key` (
f_dent_id, f_group_id
);
然後在查詢中使用INSERT IGNORE
:
INSERT IGNORE INTO groupdentlink (
f_dent_id, f_group_id, f_schedule_id
) VALUES (
'$_POST[id]', '$groupid', '$scheduleid'
)
INSERT IGNORE
將嘗試插入一行到表,如果它失敗,因爲一個關鍵的制約它會像沒有發生。
嗯。這裏是我的問題:「INSERT INTO groupdentlink(f_dent_id,f_group_id,f_schedule_id) \t SELECT '$ _ POST [ID]', '$ rowv [ID]', '$行[f_sched_id]' \t WHERE \t NOT EXISTS( \t SELECT 1 FROM groupdentlink WHERE f_dent_id = '$ _ POST [ID]' AND f_group_id = '$ GROUPID'」 ...和我得到一個語法錯誤 – 2011-12-15 19:40:50
您需要關閉括號上存在的條款。 – Eric 2011-12-15 19:48:56
...修正了那個,仍然沒有工作哦:( – 2011-12-15 20:06:58