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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果它出现在MYSQL中的组中,如何为每个值返回'true / false'?相关的知识,希望对你有一定的参考价值。

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

以下是演员姓名的列表,以及它们出现的电影:我的目标是返回一个包含以下列的表:电影的名称,演员的名字和一个列“他是否在玩这个电影”?您可以在结果表中看到,每个电影都会显示所有演员,即使他们没有播放,也会显示所有电影名称,即使其中没​​有任何播放器也是如此。按电影名称排序,按玩家名称分类时,非常感谢您的建议,

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

以上是关于如果它出现在MYSQL中的组中,如何为每个值返回'true / false'?的主要内容,如果未能解决你的问题,请参考以下文章

如何从MYSQL中的组中查找前N个记录的查询结果

如何为 Laravel ORM 中每个组中的单个项目执行 groupBy()

用R中的组中的非NA字符替换一组值的NA [重复]

如何为 Yii 中的每个按钮分配动作?

如何为路由组中的所有请求设置标头

MySQL 工作台,如何为日期创建过滤器以安排组