[英]Double MySQL query
我目前正在開發具有投票功能的應用程序。 我希望人們不要登錄並簡化操作,所以我在每次投票后都會收集IP。 有了此功能,IP將不會再對同一件事進行投票。
但是我發現很難SELECT
尚未由IP投票的投票。 我已經試過了:
SELECT * FROM messages
WHERE state = '-1'
AND id != (SELECT message_id FROM log WHERE ip = '$ip')
如何正確執行此操作?
如果我正確理解了您-此查詢應為您提供幫助:
SELECT messages.* FROM messages
LEFT JOIN log ON log.message_id = messages.id AND log.ip = '$ip'
WHERE state = '-1' AND log.ip IS NULL
SELECT * FROM messages
WHERE state = '-1'
AND id NOT IN (SELECT message_id FROM log WHERE ip = '$ip')
會按照您說的做,但我很肯定不會做您想做的事:例如,它將只允許典型蜂窩塔的一個移動用戶投票,但在他失去信號並重新聚集后將允許他再次投票它在另一個位置。
$qry = "SELECT * FROM messages " .
"WHERE state = '-1' AND NOT EXISTS (SELECT 1 FROM log WHERE log.message_id = messages.id ".
"AND ip = '" . $ip . "')";
(NOT)EXISTS通常比IN表達式快
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.