我试图根据付款人或收款人将用户表中的NAME和PHOTO连接到TRANSACTIONS表中。它一直告诉我找不到表this
--我做错了什么?
SELECT `name`,`photo`,`amount`,`comment`,
(
CASE `payer_id`
WHEN 72823 THEN `payee_id`
ELSE `payer_id`
END
) AS `this`
FROM `transactions`
RIGHT JOIN `users` ON (`users`.`id`=`this`)
WHERE `payee_id`=72823 OR `payer_id`=72823
2条答案
按热度按时间ttp71kqs1#
从documentation了解别名:
别名用作表达式的列名,可用于GROUP BY、ORDER BY或HAVING子句中。
不能在联接中使用别名。只能在上面列出的位置使用别名。原因是别名位于联接结果中的字段上。如果允许联接在其定义中使用这些别名,则将(或可能)导致递归定义。
要解决这个问题,可以在两个地方重复
CASE
子句:但是,我可能会将此查询重写为两个选择并对其进行UNION:
结果:
试验数据:
piok6c0g2#
SELECT th.id,th.硬币标识,th.硬币系列,cm.硬币标识,cm.当前价格FROM trnx_history th JOIN fmi_coins.coins_markets cm ON cm.硬币标识=(大小写th.硬币系列当1 THEN 1否则2 END)