有条件地在查询库中添加另一列其他查询结果

时间:2016-11-10 06:38:28

标签: mysql

我发现案例 的添加查询列的解决方案 然后来自同一个表,具体取决于列值但是它不能解决我的问题。

我有两张桌子。 表:

    id  date        title           description          
------  ----------  --------------  ---------------------
     1  2016-11-10  This is pool 1  this is description

表:投票

    id  date        time      pool_id  option_id  uid                           
------  ----------  --------  -------  ---------  ------------------------------
     1  2016-11-10  21:22:23        1          1  XodxfBfeRdZsOFRNbJ0AecMgpyo2  
     2  2016-11-10  21:22:23        1          2  PhbZ675XdZeL59QFKLQq8u1uQyg2  

我想通过在查询中传递 uid 来查询输出。

    id  date        title           voted          
------  ----------  --------------  ---------------------
     1  2016-11-10  This is pool 1  YES

1 个答案:

答案 0 :(得分:0)

您可以LEFT JOIN 2个表poolsvotes。然后检查投票中是否存在相应的条目,显示是否否。

为了更好的解释,我在pool table中再创建了一个条目。

INSERT INTO pools VALUES (2, '2016-11-11', 'This is pool 2', 'this is description');

以下查询将为您提供所需的输出:

SELECT p.id, p.date, p.title, IF(v.id IS NOT NULL, 'YES', 'NO') AS voted
FROM pools p LEFT JOIN votes v
ON p.id = v.pool_id
AND v.uid = 'XodxfBfeRdZsOFRNbJ0AecMgpyo2';
  

查询说明

如果不存在相应的值,

LEFT JOIN将返回LHS表中的行和来自RHS表的NULL。

然后,我们可以在SELECT语句中添加一项检查,以创建自定义列voted

  

输出

id  date        title          voted
-------------------------------------
1  2016-11-10  This is pool 1  YES   
2  2016-11-11  This is pool 2  NO