根据不同列的条件从数据库中进行选择

时间:2014-01-01 18:59:20

标签: mysql sql database mysqli prepared-statement

我有以下查询,我认为SQL CASE语句在这里不起作用。我想从表中选择一个字段,如果查询中的条件为真,则条件基于不同的列。我认为使用案例不会解决问题,因为CASE会检查特定列中的值。

我可以创建两个单独的查询来完成这个任务,是否可以用一个语句来完成它?

查询:

SELECT 
    c.Conversation_ID, c.Title, c.Date, u.Name, 
    (SELECT 
        COUNT(*) 
     FROM 
        conversation_message 
     WHERE 
        Conversation_ID = c.Conversation_ID) as Total 
FROM 
    conversation c, user u 
WHERE 
    c.User_ID = ? 
    OR c.With_User_ID = ? 
    AND u.User_ID=c.With_User_ID

在当前场景中,名称始终为With_User_ID,我想要的是如果c.User_ID变为true则应执行u.User_ID = c.With_User_ID,否则如果c.With_User_ID变为true,则u.User_ID = c.User_ID应该被执行。

1 个答案:

答案 0 :(得分:0)

您是否在where条款中尝试过嵌套条件?

例如:

WHERE
    (c.User_ID = ? AND u.User_ID = c.With_User_ID)
    OR (c.With_User_ID = ? AND u.User_ID = c.User_ID)