繁体   English   中英

如果每个值出现在MYSQL的组中,如何返回“真/假”?

[英]How to return 'true/false' for each value, if it appears at a groups in MYSQL?

我的目标是检查值列表是否它们出现在某些值组中,并在显示所有组时以真/假布尔值回答该问题。 这是一个非常简单的示例:

以下是演员姓名及其出现的电影的列表:我的目标是返回一个包含以下各列的表:电影名称,演员姓名和“他在其中扮演过的角色”一列这个电影”? 您可以在结果表中看到,即使每个演员都没有播放,所有演员也会出现在每部电影中,并且即使其中没​​有任何演员,也会出现所有电影名称。 在按电影名称排序并按播放器名称细分时,非常感谢您的建议,

 <!-- begin snippet: js hide: false console: true babel: false --> 
  <style type="text/css"> table.tableizer-table { font-size: 12px; border: 1px solid #CCC; font-family: Arial, Helvetica, sans-serif; } .tableizer-table td { padding: 4px; margin: 3px; border: 1px solid #CCC; } .tableizer-table th { background-color: #104E8B; color: #FFF; font-weight: bold; } </style> <table class="tableizer-table"> <thead><tr class="tableizer-firstrow"><th>Actor</th><th>Movie Name</th></tr></thead><tbody> <tr><td>Brad Pitt</td><td>inglourious basterds</td></tr> <tr><td>Matt Damon</td><td>Ocean's Eleven</td></tr> <tr><td>Leonardo DiCaprio</td><td>The Departed</td></tr> <tr><td>Brad Pitt</td><td>Ocean's Eleven</td></tr> <tr><td>Matt Damon</td><td>The Departed</td></tr> <tr><td>Christoph Waltz </td><td>inglourious basterds</td></tr> <tr><td>Leonardo DiCaprio</td><td>The Wolf of Wall Street</td></tr> </tbody></table> 


  
 
  
  
  
    <style type="text/css">
    	table.tableizer-table {
    		font-size: 12px;
    		border: 1px solid #CCC; 
    		font-family: Arial, Helvetica, sans-serif;
    	} 
    	.tableizer-table td {
    		padding: 4px;
    		margin: 3px;
    		border: 1px solid #CCC;
    	}
    	.tableizer-table th {
    		background-color: #104E8B; 
    		color: #FFF;
    		font-weight: bold;
    	}
    </style>
    <table class="tableizer-table">
    <thead><tr class="tableizer-firstrow"><th>Movie Name</th><th>Actor</th><th>did he played?</th></tr></thead><tbody>
     <tr><td>inglourious basterds</td><td>Brad Pitt</td><td>TRUE</td></tr>
     <tr><td>inglourious basterds</td><td>Christoph Waltz </td><td>TRUE</td></tr>
     <tr><td>inglourious basterds</td><td>Leonardo DiCaprio</td><td>FALSE</td></tr>
     <tr><td>inglourious basterds</td><td>Matt Damon</td><td>FALSE</td></tr>
     <tr><td>Ocean's Eleven</td><td>Brad Pitt</td><td>TRUE</td></tr>
     <tr><td>Ocean's Eleven</td><td>Christoph Waltz </td><td>FALSE</td></tr>
     <tr><td>Ocean's Eleven</td><td>Leonardo DiCaprio</td><td>FALSE</td></tr>
     <tr><td>Ocean's Eleven</td><td>Matt Damon</td><td>TRUE</td></tr>
     <tr><td>The Departed</td><td>Brad Pitt</td><td>FALSE</td></tr>
     <tr><td>The Departed</td><td>Christoph Waltz </td><td>FALSE</td></tr>
     <tr><td>The Departed</td><td>Leonardo DiCaprio</td><td>TRUE</td></tr>
     <tr><td>The Departed</td><td>Matt Damon</td><td>TRUE</td></tr>
     <tr><td>The Wolf of Wall Street</td><td>Brad Pitt</td><td>FALSE</td></tr>
     <tr><td>The Wolf of Wall Street</td><td>Christoph Waltz </td><td>FALSE</td></tr>
     <tr><td>The Wolf of Wall Street</td><td>Leonardo DiCaprio</td><td>TRUE</td></tr>
     <tr><td>The Wolf of Wall Street</td><td>Matt Damon</td><td>FALSE</td></tr>
    </tbody></table>

您可以将表与自身交叉连接,并在相关查询上使用exists运算符:

SELECT a.actor, b.movie, EXISTS (SELECT *
                                 FROM   mytable c
                                 WHERE  a.actor = c.actor AND b.movie = c.movie) AS played
FROM       (SELECT DISTINCT actor FROM mytable) a
CROSS JOIN (SELECT DISTINCT movie FROM mytable) b

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM