我有這樣的SQL SELECT查詢mysql的,如果在WHERE子句
SELECT *
FROM bots
WHERE id NOT IN (select botid
from messages
where messages.recipient = :recipient)
limit 1
/else語句,我需要做這樣的事情:
SELECT *
FROM bots
[if isset(recipient = $recipient AND sender = $sender)]
WHERE id IN (select botid
from messages
where messages.recipient = :recipient and sender = :sender)
else
WHERE id NOT IN (select botid
from messages
where messages.recipient = :recipient)
limit 1
[] - 僞代碼
如何使這個查詢?
機器人表:
-------------------------------------------------------
| id | auth_token | messages_today | vkid |
-------------------------------------------------------
| 1 | token | 0 | 2323 |
-------------------------------------------------------
| 2 | token | 0 | 2343 |
-------------------------------------------------------
信息表:
-----------------------------------------------------------
| id | recipient | sender | botid | messageid |
-----------------------------------------------------------
| 1 | 12 | 1 | 1 | 3322 |
-----------------------------------------------------------
| 2 | 12 | 2 | 2 | 332123 |
-----------------------------------------------------------
| 3 | 13 | 1 | 1 | 332123 |
-----------------------------------------------------------
從你的僞收件人和發件人的郵件,它是不清楚你想如何應用該條件。通過仔細的()分組和邏輯與/或邏輯,通常可以將這樣的條件(基於存在/不存在輸入值)直接處理到WHERE子句中。 –
你想要所有的機器人(列表A),如果他們不在列表A中,那麼確保它們不在列表B中? – xQbert
@xQbert我想得到所有沒有發送任何東西給這個收件人的機器人,如果我們的發件人!=發件人,爲此我有機器人和郵件表 –