我有以下查询,我认为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应该被执行。
答案 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)