我有一个关于如何在 SQL 中使用 IF 语句的问题,所以我有 3 个表
每个表中的字段如下
user mechanics exchanges
------ ---------- ---------
name name id_user
id_user id_mecha id_mecha
message
我想使用类似下面的条件,如果他们的
user
与 mechanic
对它们中的每一个( message
或 id
)匹配,我将选择 exchanges
或 user
的名称及其相应的 mechanic
SELECT CASE
WHEN mechanics.id_mecha = exchanges.id_mecha
THEN mechanics.name, exchanges.message
WHEN users.id_user = exchanges.id_user
THEN users.name, exchanges.message
FROM users
JOIN mechanics
JOIN exchanges
最佳答案
双 JOIN
将在机械师和用户之间产生一个完整的交叉产品。这可能不是您想要的。您应该对每个表使用单个连接,然后将它们与 UNION
组合。
SELECT m.name, e.message
FROM mechanics AS m
JOIN exchanges AS e ON m.id_mecha = e.id_mecha
UNION
SELECT u.name, e.message
FROM users AS u
JOIN exchanges AS e ON m.id_user = e.id_user
关于mysql - 在 SQL 中使用 IF/CASE 条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28596658/