MYSQL选择显示匹配和不匹配的记录

时间:2019-09-06 21:25:35

标签: php mysql mysqli

我有一个字符串列表,所有字符串都用换行符分隔。我需要将这些字符串与一个表中的一列中的值进行匹配。问题是我需要将不匹配的记录显示为定义值,例如“未找到”,以便输出与输入保持相同的长度,并且结果都保持相同的顺序。

示例输入

  1. 苹果
  2. 橙色
  3. 香蕉

所需的输出

  1. 苹果存在
  2. 找不到橙色
  3. 梨存在
  4. 香蕉存在

是否可以将自定义值分配给未找到的记录以及在单个语句中找到的显示记录? 信息似乎表明我可以使用IFNULL创建一条语句以返回不匹配的记录,我已经对此进行了尝试,但无济于事。

 <?php
 // Wrap strings for select statement
 $strings = $_POST['mystrings'];
 $regex = '~<[^>]+>(*SKIP)(*FAIL)|\b\w+\b~'; 
 $strings_wrapped = preg_replace($regex, "'\\0',", $strings);
 $strings_prepared = substr($strings_wrapped, 0, -1);

 // Statement
 $select = "select * from table where specific_row in ($strings_prepared)";

 // Connect
 $connect = mysqli_query($con, $select);

      // Retrieve rows
      while ($row=mysqli_fetch_array($connect)) {
      $column1 = $row['column1'];
      $column2 = $row['column2'];
      $column3 = $row['column3'];
      $column4 = $row['column4'];
      $column5 = $row['column5'];

      // Display results
      $results = "$column1-$column2-$column3-$column4-$column5\n";
      echo $results;
      }
 ?>

返回的匹配行没有错误。我只是也不知道如何显示不匹配的行。

2 个答案:

答案 0 :(得分:0)

这是您可以使用的方法:

def add_profile(access_key, access_secret, name_profile, region=None)

答案 1 :(得分:0)

您可以使用子查询来创建包含要搜索的名称的派生表,并将其与该表联接。

SELECT a.value, IF(b.specific_row IS NULL, 'not found', 'exists') AS found
FROM (
    SELECT 'apple' AS value
    UNION
    SELECT 'orange'
    UNION
    SELECT 'pear'
    UNION
    SELECT 'banana'
) AS a
LEFT JOIN table AS b ON a.value = b.specific_row