[英]MySQL Query Selecting records from a database where a value equals one of two different things
我必须从MySQL DB获取记录,其中:
sentto = "$username"
要么
sentto = "everyone"
我如何将它放在MySQL查询中? 我尝试了一些东西,但它们似乎没有起作用:
mysql_query("SELECT *
FROM pmessages
WHERE status='unread'
AND sentto='$username' || sentto='everyone'");
mysql_query("SELECT *
FROM pmessages
WHERE status='unread'
AND sentto='$username'
AND sentto='everyone'");
我似乎很难过,如果有人知道如何以正确的方式做到这一点请告诉我。 对我来说这是一个新的场景。 谢谢!
SELECT *
FROM pmmessages
WHERE sentto = '$username'
OR sentto = 'everyone'
根据您的新查询编辑 Chris:
SELECT *
FROM pmessages
WHERE status='unread'
AND sentto='$username'
OR sentto='everyone'
你需要修改它,以便你的AND独立(它与你的OR相冲突)。
把它改写成这个
SELECT *
FROM pmessages
WHERE status='unread'
AND
(sentto='$username'
OR sentto='everyone' )
由于它是您正在测试的相同列,我将使用IN
关键字:
SELECT *
FROM pmessages
WHERE status='unread'
AND sentto IN ('everyone', '$username');
将您的一条评论中的详细信息考虑在内 - 使用“ OR
”关键字和括号来确保合并正确的条件。
SELECT * FROM pmessages WHERE
status = 'unread'
AND
(sentto = ? OR sentto = 'everyone')
你的问题从未与OR
,但它实际上是AND
优先级和缺少括号。 您在问题中完全忽略的非常重要的细节是“ status = unread
”的附加测试。
注意使用?
以上-你应该真的 , 真的使用时结合MySQL和PHP,即准备好的语句:
$sql = "..." # as above
$sth = $db->prepare($sql);
$res = $sth->execute($username);
while ($row = $sth->fetchrow()) {
...
}
(或mysqli
等价物)
OR是你正在寻找的:
mysql_query(“SELECT * FROM pmessages WHERE sentto ='$ username'或sentto ='everyone'”);
每个人都是实际价值,还是想要归还所有结果?
如果你想返回所有结果设置这样的东西
if (@sentto is null)
begin
set @sendto='%'
end
mysql_query("SELECT * FROM pmessages WHERE sentto='$username'")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.