gpt4 book ai didi

php - 帮助创建正确的 CASE 语句

转载 作者:行者123 更新时间:2023-11-29 14:50:41 26 4
gpt4 key购买 nike

我在弄清楚如何为下面复制的查询创建 case 语句时遇到问题。本质上,查询所做的只是从当前用户发送的 messages_messages 查询 ($userid) 或原始线程的发送者 ($threadid) 发送的消息中提取行。这对每个人来说都是完美的 SELECT,除了线程的原始发送者,他应该能够提取与线程相关的所有消息。

基本上我需要添加与以下语句等效的 SQL:

WHERE messages_threads.id = $threadid
if($userid == messages_threads.senderid) {
// Don't add an AND clause
} else {
// Add the following AND clause
AND (messages_messages.senderid = $userid OR messages_messages.senderid = messages_threads.senderid)
}

这是我当前使用的查询:

SELECT messages_messages.id, messages_messages.senderid, username AS sendername, pictures.url AS picture, body, UNIX_TIMESTAMP(time) AS unixtimestamp
FROM messages_messages
JOIN messages_threads ON messages_threads.id = messages_messages.threadid
JOIN users ON messages_messages.senderid = users.id
LEFT JOIN pictures ON messages_messages.senderid = pictures.userid AND pictures.profile = 1
WHERE messages_threads.id = $threadid
AND (messages_messages.senderid = $userid OR messages_messages.senderid = messages_threads.senderid)
ORDER BY time ASC

最佳答案

任何一系列 if 语句都可以转换为 AND 和 OR:

WHERE messages_threads.id = $threadid AND 
($userid=messages_threads.senderid OR
(messages_messages.senderid = $userid OR
messages_messages.senderid = messages_threads.senderid))

如果 $userid==messages_threads.senderid 为 true,则整个 or 子句为 true,因此不会检查其他任何内容。如果为 false,则检查子句的其余部分。

关于php - 帮助创建正确的 CASE 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5795384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com