MySQL:如何检查是不是列出了用户
Posted
技术标签:
【中文标题】MySQL:如何检查是不是列出了用户【英文标题】:MySQL: How can I check whether Users are listed or notMySQL:如何检查是否列出了用户 【发布时间】:2015-08-12 16:55:39 【问题描述】:我想知道如何检查用户是否已经在数据库中。
在 php 中,我有一个包含一些用户 ID 的数组。 即用户ID [0] = 1234;用户 IDs[1] = 2345;
现在我想构建一个查询,如果可能的话只进行一次 sql 调用以获得以下结果:
############################
# UserID # Exists #
############################
# 1234 # 0 #
# 2345 # 1 #
############################
是否有 sql 解决方案或者我必须通过单独的调用检查每个 ID? 感谢您的帮助!
【问题讨论】:
你可以使用IN
子句...SELECT... FROM... WHERE UserID IN (YourArray)
【参考方案1】:
根据您可以执行的列表检查现有的id
s
select userId, userId in (2345,5678) as `exists`
from your_table
order by userId
但是要检查id
s 的列表是否在数据库中,您可以这样做
select tmp.userId, tab.userId is not null as `exists`
from
(
select 1234 as userId
union all
select 2345
union all
select 3456
) tmp
left join db_table tab on tab.userId = tmp.userId
【讨论】:
哇,这很简单 :) 非常感谢,我不知道“in”语句! 这将为您提供所有用户 1000 条记录 1000 条结果,如果用户 ID 5678 不存在 它将不在结果集中,未列出。所以OP:检查用户是否已经在数据库中将不起作用。 我刚刚意识到这是错误的方式。您发布的此查询显示数据库中的 id 是否在我的数组中。但我需要反过来。是我的数据库中我的数组的 ID。我不确定如何得到这个结果。 啊,建一张桌子,对我有用!谢谢! @SomehowLuke :现在如何使用数组而不是硬编码值?【参考方案2】:x:
你在 PHP 中建立你的查询,它是字符串。
$idsFromFacebook = array(1234,2345,3456,4567);
//start query
$strQuery = "select tmp.userId, tab.userId is not null as `exists` from (";
$bfirstRun = true;
//Go through each element of the array and connect them with the query string
foreach( $idsFromFacebook as $userID )
//There is no union all before the first element and after the last
if ( !$bFirstRun )
$strQuery .= " union all ";
$strQuery .= "select ".$userID;
if ( $bFirstRun )
//"as userId" is only needed the first time
$strQuery .= " as userId";
$bFirstRun = False
//Finishing the query by joining the generated table with database
$strQuery .= ") tmp left join db_table tab on tab.userId = tmp.userId;";
//Call Query
$result = $dbms->query($strQuery);
//...
差不多就是这样。因为查询是一个字符串,你可以像你想要的那样构建它:)
【讨论】:
并非所有用户都有时间测试这个查询。也请在您的答案中显示。示例 数据库名称、字段。创建的$strQuery
,结果,新创建的表,字段,内容等。所以用户可以清楚地看到发生了什么。谢谢。
对不起,我也没有测试,这只是一个如何建立动态查询的例子。一旦你有了构建查询(它仍然只是一个字符串,没有别的;))你可以像硬编码一样使用它......以上是关于MySQL:如何检查是不是列出了用户的主要内容,如果未能解决你的问题,请参考以下文章
如何在插入 MySQL 之前检查表中是不是存在名称 [重复]
使用 PHP+jQuery AJAX 检查 MySQL 数据库的更改并加载更改?