如果它出现在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'?的主要内容,如果未能解决你的问题,请参考以下文章