感谢任何帮助--
1064 - 您的 SQL 语法有误;检查与您的 MySQL 服务器版本相对应的手册,以了解在行附近使用的正确语法 'as receiverimage, re.fName as receiverfName , re.lName as receiverlName , re.add'
SELECT co.*,
if(( co.senderid = 1) , ( re.image as receiverimage, re.fName as receiverfName , re.lName as receiverlName , re.address as receiverAddress , re.city as receivercity , re.state as receiverstate, re.country as receivercountry, re.zipCode as receiverzip),(se.address as senderAddress,se.city as sendercity , se.state as senderstate , se.country as sendercountry , se.zipCode as senderzip , se.image as senderimage ,se.fName as senderfName, se.lName as senderlName ))
FROM contacts as co
LEFT JOIN users as se ON( se.id = co.senderid )
LEFT JOIN users as re ON( re.id = co.receiverid )
where (senderid = 1 OR receiverid = 1)
-- 是在连接表上选择多个字段无效还是其他原因?
我无法找出确切原因,基本概率。这里是根据join从用户表中根据if条件选择几个字段。
最佳答案
你不能在 if 语句中使用别名。我刚刚测试了您的查询,删除别名后问题得到解决。
if(( co.senderid = 1) , ( re.image, re.fName, re.lName, re.address, re.city, re.state, re.country, re.zipCode), (se.address,se.city, se.state, se.country, se.zipCode, se.image,se.fName, se.lName )) AS mydata
编辑:您还应该为整个 IF 添加一个别名,这样您就不会将表达式作为列名:)
编辑 2:抱歉,我写得太早了。您不能像这样在一次选择中选择多行。如果您需要该数据,则必须编写一个子查询,或者为您需要的每一列放置一个 if。
IF(co.senderid = 1, re.image, se.address,) as col1
IF(co.senderid = 1, re.fName, se.city) as col2
IF(co.senderid = 1, re.lName, se.state) as col3
IF(co.senderid = 1, re.address, se.country) as col4
等等......你明白了:)
关于mysql - 使用 If 条件选择多个字段,在 mysql 中使用左连接 - 抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30513881/