Php MySQL使用Case语句连接
我在提问时遇到了点麻烦。如果遇到情况,我希望联接表。这就是我正在处理的问题。我对这些案例陈述有点陌生,因此非常感谢您的帮助Php MySQL使用Case语句连接,php,mysql,sql,case-statement,Php,Mysql,Sql,Case Statement,我在提问时遇到了点麻烦。如果遇到情况,我希望联接表。这就是我正在处理的问题。我对这些案例陈述有点陌生,因此非常感谢您的帮助 SELECT conversation.c_id, conversation.user_one, conversation.user_two, users.name, users.lastName FROM `conversation` CASE
SELECT
conversation.c_id,
conversation.user_one,
conversation.user_two,
users.name,
users.lastName
FROM `conversation`
CASE
WHEN conversation.user_one = 1
THEN
INNER JOIN `users`
ON conversation.two = users.id
WHEN conversation.user_two = 1
THEN
INNER JOIN `users`
ON conversation.user_one = users.id
END CASE
WHERE `user_one` = 1 OR `user_two` = 1
不要对整个内部联接进行大小写,只对联接中的'on'子句进行大小写。这应该行得通(除非我有打字错误):
您还可以通过左键连接这些条件中的每一个条件,然后在select语句中使用case语句来确定从两个表中的哪一个显示记录,从而实现类似的效果。将
case
移动到on
子句中。只需尝试一下,仍然无效:/。否,我认为你不能像现在这样使用CASE
语句。你可能想看看动态查询。我不想在这里使用动态…他也可以在select语句中使用一对左连接和大小写,但我认为动态无法满足他的需要。是的,我明白你在第十二篇文章中说的了。它正在工作。谢谢你的帮助!
SELECT
conversation.c_id,
conversation.user_one,
conversation.user_two,
users.name,
users.lastName
FROM `conversation`
INNER JOIN `users`
on
users.id =
CASE
WHEN conversation.user_one = 1
THEN conversation.two
WHEN conversation.user_two = 1
THEN conversation.user_one
END
WHERE `user_one` = 1 OR `user_two` = 1