使用左连接选择查询不起作用

时间:2014-01-21 05:59:27

标签: mysql sql left-join

我想离开加入此查询,但它似乎无法正常工作

 select *,(SELECT datediff(t1.expirydate,CURDATE())as daysleft
 from tbl1 t1,
 left join tbl2 t2  on (t1.mid=t2.mid and t1.pid=t2.pid and t1.uid=3)

您的SQL语法有错误;

right syntax to use near 'left join tbl2 t2  on (t1.mid=t2.mid and t1.pid=t2.p' at line 3

请让我知道我哪里错了

这里正在加入3个表但是没有用

 SELECT t1.*, t2.*,t3.* datediff(t1.expirydate, CURDATE()) AS daysleft FROM tbl1 t1 left join  
  tbl2 t2 on t1.mid = t2.mid and t1.pid = t2.pid left join tbl3 t3 on t3.pid = t2.pid where t1.uid=3 

for knw 3 table但是我得到语法错误

3 个答案:

答案 0 :(得分:2)

你没有在连接之间加一个逗号。

SELECT t1.*, t2.*, datediff(fsp.expirydate, CURDATE()) AS daysleft
FROM tbl1 t1
left join tbl2 t2 on t1.mid = t2.mid and t1.pid = t2.pid
cross join fsp
where t1.uid = 3

您也不应将t1.uid = 3条件放在ON子句中。 ON应该只包含与这两个表相关的条件,对于LEFT JOIN,它还可以包含您要加入的表格的条件(在这种情况下为t2)。< / p>

答案 1 :(得分:1)

第2行“t1”后没有逗号。

另外我认为你不能在第1行做“*”,你需要做“SELECT *”或“SELECT column,column2”

答案 2 :(得分:1)

您在左连接之前使用逗号(,) 这是不正确的Synatx

试试这个

 select t1.*,(SELECT datediff(fsp.expirydate,CURDATE())as daysleft
 from tbl1 t1
 left join tbl2 t2  on (t1.mid=t2.mid and t1.pid=t2.pid and t1.uid=3)

Join Syntax