MySql 基于字段值连接表

标签 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 ;

根据帖子状态为真/假加入 users/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 ;

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

关于MySql 基于字段值连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31863731/

相关文章:

mysql - 从两个表中获取唯一数据

mysql - yii中关系型mysql无主键表搜索(调用非整数字段)

c# - 从动态数据透视表中加入具有匿名列的列表

php - 使用一个参数 pdo 查询两个表

Mysql连接字符串值位置-副

mysql - Pundit 通过联接表确定模型所有权范围 - Rails 4

php - MySQL 服务器已经消失

C# WPF 程序在调试中运行,但不调试就无法发布

android - 如何在android中加入urdu单词?

c# - 使用c#检查mysql数据库中是否有记录