簡體   English   中英

雙MySQL查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM