如果每个值出现在mysql中的某个组中,如何为每个值返回true/false?

smdnsysy  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(314)

我的目标是检查值列表是否出现在某些值组中,并在显示所有组时以真/假布尔值回答该问题。下面是一个非常简单的例子:
以下是演员姓名列表,以及他们在其中出现的电影:我的目标是返回一个包含以下列的表:电影名称、演员姓名和“他在电影中扮演过什么角色”列?您可以在结果表中看到,每个电影的所有演员都会出现,即使他们没有播放,并且所有电影的名称都会出现,即使其中没有任何播放器。当按电影名排序,按玩家名再排序时,非常感谢您的建议,

<!-- 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>
p8h8hvxi

p8h8hvxi1#

您可以将表与其自身交叉联接并使用 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

相关问题