[英]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.