Sql显示类型为x的10个结果,类型为y的显示10个结果


Sql show 10 results where type = x and 10 results where type= y

是否可以将这两条语句放入一个查询中?

   $q = mysqli_query($con,"SELECT * FROM angebote where (city = '".$_POST['search']."' OR plz = '".$_POST['search']."') AND art = 'biete' ORDER BY id DESC LIMIT 18");
   $p = mysqli_query($con,"SELECT * FROM angebote where (city = '".$_POST['search']."' OR plz = '".$_POST['search']."') AND art = 'suche' ORDER BY id DESC LIMIT 18");

似乎不适用于UNION或UNION ALL

所以当我尝试时

    $q = mysqli_query($con,"SELECT * FROM angebote where (city = '".$_POST['search']."' OR plz = '".$_POST['search']."') AND art = 'biete' ORDER BY id DESC LIMIT 10 UNION
                SELECT * FROM angebote where (city = '".$_POST['search']."' OR plz = '".$_POST['search']."') AND art = 'biete' ORDER BY id DESC LIMIT 10");

它说警告:mysqli_fetch_assoc()期望参数1是mysqli_result,布尔值在C:…中给定。。。。。

UNION在这里工作良好:

$q = mysqli_query($con, "
    SELECT * FROM 
    (SELECT
      * 
    FROM 
      angebote
    WHERE 
      (city = '".$_POST['search']."' OR plz = '".$_POST['search']."') AND 
      (art = 'biete')
    ORDER BY id DESC LIMIT 10) as biete_tabelle
    UNION
    SELECT * FROM 
    (SELECT
      * 
    FROM 
      angebote
    WHERE 
      (city = '".$_POST['search']."' OR plz = '".$_POST['search']."') AND 
      (art = 'suche')
    ORDER BY id DESC LIMIT 10) as suche_tabelle"
);

这会给你带来你想要的结果。看看这里的例子。

注意:虽然我坚持使用德语来保持一致性,但我想建议您,最好使用英文的列和变量等名称,这样不会说德语的开发人员更容易阅读您的代码。