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】:

根据您可以执行的列表检查现有的ids

select userId, userId in (2345,5678) as `exists`
from your_table
order by userId

但是要检查ids 的列表是否在数据库中,您可以这样做

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:如何检查是不是列出了用户的主要内容,如果未能解决你的问题,请参考以下文章

如何检查用户是不是在 LDAP 组中

如何在插入 MySQL 之前检查表中是不是存在名称 [重复]

使用 PHP+jQuery AJAX 检查 MySQL 数据库的更改并加载更改?

如何检查日期是不是是 MySQL 中一周中的特定日期?

PHP:每 10 秒检查一次 mysql 数据库是不是有任何新行

如何检查用户是不是从用户列表中关注另一个用户?