如何仅显示与其他表中的值匹配的行
问题描述:
它如何在类似的情况下工作?我甚至尝试使用“AND tb1.name!=”,但它没有奏效。如何仅显示与其他表中的值匹配的行
$area = 0;
$stmt = $dbh->prepare('SELECT * FROM charinfo WHERE current_area != :area ORDER BY current_area');
$stmt->execute(array('area' => $area));
$result = $stmt->fetchAll();
$place = 1;
我运行一个游戏服务器,并在网站上我有一个30强排行榜这是工作的奇迹(代码直接找到在这里下车另一个话题),我有没有能够使用的问题每个人都在建议的JOIN功能,以防止ADMIN的角色被列出。
下面是我现在在我的网站上的代码,它显示了职级编号1-30,角色名称和表中的级别。 Here's it working on my website
<?php
require("srvcs/config.php");
$stmt = $dbh->prepare('SELECT * FROM chars ORDER BY CAST(experience AS UNSIGNED) DESC LIMIT 30;');
$stmt->execute();
$result = $stmt->fetchAll();
$place = 1;
echo '<table class="justShowme" style="width:600px;height:150px;">
<tr>
<td>Rank</td>
<td>Character Name</td>
<td>Level</td>
</tr>';
foreach ($result as $index => &$item) {
$exp = floor(pow($item['experience'] + 1, 1/4));
$name = $item['name'];
echo '<tr>';
echo "<td><B>" . $place++ . "</B></td>";
echo "<td>" . $name . "</td>";
echo "<td>" . $exp . "</td>";
echo '</tr>';
}
echo '</table></center>';
?>
我不是很熟悉的MySQL,所以我就列出各种我所知道的是必要的启动...
-
“字符”表中包含的字符信息
'sID' column is unique and matches the subscriber 'ID' column, whoever owns the character
-
'订户' 表包括帐户信息和管理员状态
'ID' is the subscriber ID which the 'sID' from chars table refers to 'admin' is the admin status of the account as Y or N
如果一个字符的管理员值为Y的用户ID的sID值不应列出。
如果该字符的管理员值为N的用户ID的sID值将被列出,并且该表列出为DESC,并且仅显示30行结果。
我该怎么做呢?
任何帮助将不胜感激!这是我的第一篇文章,所以未来的帮助请求的提示也不错:)提前谢谢!
答
SELECT tb1.*
FROM chars tb1
JOIN subscriber tb2
ON tb1.sID=tb2.ID
WHERE admin = 'N'
ORDER BY CAST(experience AS UNSIGNED) DESC
LIMIT 30;
答
您可以使用NOT IN子查询。
见下文。
SELECT chars.*
FROM chars
WHERE sID NOT IN (SELECT ID FROM subscriber WHERE subscriber.admin = 'Y')
ORDER BY CAST(experience AS UNSIGNED) DESC
LIMIT 30;
+0
这也行得通,谢谢! –
非常感谢你,这正是我所建议的,但不知道如何复制和工作!拯救生命! –