想要使用 sql 和 php 仅显示所选值的行
P粉007288593
P粉007288593 2023-09-02 15:25:33
[PHP讨论组]
<p>我有 40 个提供商和 10,000 个产品,但我想显示每个提供商的 1 个产品</p> <table class="s-table"> <thead> <tr> <th>品牌</th> <th>提供商</th> <th>产品</th> <th>网址</th> </tr> </thead> <tbody> <tr> <td>闪电</td> <td>务实的游戏</td> <td>命运夫人</td> <td>链接</td> </tr> <tr> <td>闪电</td> <td>Isoftbet</td> <td>万圣节杰克</td> <td>链接</td> </tr> <tr> <td>闪电</td> <td>务实的游戏</td> <td>甜蜜的富矿</td> <td>链接</td> </tr> <tr> <td>闪电</td> <td>Isoftbet</td> <td>热带保安</td> <td>链接</td> </tr> <tr> <td>闪电</td> <td>网络</td> <td>皇家马铃薯</td> <td>链接</td> </tr> <tr> <td>闪电</td> <td>网络</td> <td>命运夫人</td> <td>链接</td> </tr> </tbody> </table> <p>这就是我现在的 SQL 表。但我想显示每个提供商的 1 项,例如:</p> <table class="s-table"> <thead> <tr> <th>品牌</th> <th>提供商</th> <th>产品</th> <th>网址</th> </tr> </thead> <tbody> <tr> <td>闪电</td> <td>务实的游戏</td> <td>命运夫人</td> <td>链接</td> </tr> <tr> <td>闪电</td> <td>Isoftbet</td> <td>万圣节杰克</td> <td>链接</td> </tr> <tr> <td>闪电</td> <td>网络</td> <td>皇家马铃薯</td> <td>链接</td> </tr> </tbody> </table> <p>这是我的代码 `</p> <pre class="brush:php;toolbar:false;">&lt;?php /* Attempt MySQL server connection. Assuming you are running MySQL server with default setting (user 'root' with no password) */ $link = mysqli_connect(&quot;localhost&quot;, &quot;newuser1&quot;, &quot;p,+Dn@auTD3$*G5&quot;, &quot;newdatabse&quot;); // Check connection if($link === false){ die(&quot;ERROR: Could not connect. &quot; . mysqli_connect_error()); } // Attempt select query execution $sql = &quot;SELECT * FROM tablename WHERE Brand='Coolcasino' and Provider IN ('Pragmatic Play','Isoftbet','Netent') ;&quot;; if($result = mysqli_query($link, $sql)){ if(mysqli_num_rows($result) &gt; 0){ echo &quot;&lt;table&gt;&quot;; echo &quot;&lt;tr&gt;&quot;; echo &quot;&lt;th&gt;Brand&lt;/th&gt;&quot;; echo &quot;&lt;th&gt;Provider&lt;/th&gt;&quot;; echo &quot;&lt;th&gt;Product&lt;/th&gt;&quot;; echo &quot;&lt;th&gt;URL&lt;/th&gt;&quot;; echo &quot;&lt;/tr&gt;&quot;; while($row = mysqli_fetch_array($result)){ echo &quot;&lt;tr&gt;&quot;; echo &quot;&lt;td&gt;&quot; . $row['Brand'] . &quot;&lt;/td&gt;&quot;; echo &quot;&lt;td&gt;&quot; . $row['Provider'] . &quot;&lt;/td&gt;&quot;; echo &quot;&lt;td&gt;&quot; . $row['Product'] . &quot;&lt;/td&gt;&quot;; echo &quot;&lt;td&gt;&quot; . $row['URL'] . &quot;&lt;/td&gt;&quot;; echo &quot;&lt;/tr&gt;&quot;; } echo &quot;&lt;/table&gt;&quot;; // Close result set mysqli_free_result($result); } else{ echo &quot;No records matching your query were found.&quot;; } } else{ echo &quot;ERROR: Could not able to execute $sql. &quot; . mysqli_error($link); } // Close connection mysqli_close($link); ?&gt;</pre> <p>如果有人可以的话请帮助我`</p>
P粉007288593
P粉007288593

全部回复(2)
P粉939473759

将您的查询替换为

$sql = "SELECT * FROM tablename WHERE Brand='Coolcasino' and Provider IN ('Pragmatic Play','Isoftbet','Netent') GROUP BY  Provider;";
P粉317679342

使用行号:

select Brand,
       Provider,
       Product,
       URL
from (   select Brand,
                Provider,
                Product,
                URL,
                row_number() over(partition by Provider order by rand()) as row_num
         from tablename
         where Brand='Lightning' 
         and Provider IN ('Pragmatic Play','Isoftbet','Netent') 
      ) as rand_prod
where row_num=1;

https://dbfiddle.uk/BGzx6cYY

注意,我建议不要使用 select * ,仅选择您真正需要的列

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号