基于字段值的MySql连接表

基于字段值的MySql连接表,mysql,join,Mysql,Join,是否可以这样做: SELECT p.*, u.* FROM posts AS p IF(p.status = 1) LEFT JOIN users AS u ON u.id = p.user_id ELSE LEFT JOIN pusers AS u ON u.id = p.user_id WHERE p.id = 10 ; 根据post状态为真/假,加入用户/pusers表否,但您可以这样做: SELECT p.*,

是否可以这样做:

SELECT 
  p.*, u.*
FROM
  posts AS p 
  IF(p.status = 1) 
  LEFT JOIN users AS u 
    ON u.id = p.user_id 
    ELSE 
  LEFT JOIN pusers AS u 
    ON u.id = p.user_id 
WHERE p.id = 10 ;

根据post状态为真/假,加入用户/pusers表

否,但您可以这样做:

SELECT p.*,
       (case when p.status = 1 then u.col1 else pu.col1 end) as col1
FROM posts p LEFT JOIN
     users u 
     ON u.id = p.user_id and p.status = 1 LEFT JOIN
     pusers AS pu 
     ON pu.id = p.user_id and p.status <> 1
WHERE p.id = 10 ;
选择p.*,
(当p.status=1时,则u.col1 else pu.col1 end)作为col1
从立柱p向左连接
用户u
ON u.id=p.user\u id和p.status=1左连接
pusers AS pu
在pu.id=p.user\u id和p.status 1上
其中p.id=10;

换句话说,您可以根据条件联接两个表并使用表中的值。

谢谢您的回答,但我得到了“SQLSTATE[42S22]:找不到列:1054未知列“field list”[代码:42S22]”对不起,我的错。我只需要一个有效的列名。它工作得很好。谢谢