【问题标题】:Get at least x number of rows in MySQL在 MySQL 中获取至少 x 行数
【发布时间】:2011-10-21 15:47:20
【问题描述】:

您好,我正在尝试让 mysql 查询正常工作,但老实说,我不确定从哪里开始,我认为 count 函数可以工作,但不确定。

我要做的是进行选择,但如果计数的行数少于 5 行,则与另一个查询/where 子句联合,直到达到 5。

所以基本上至少走 5 行并继续加入行,直到达到 5 或更多...

    $myquery_mysql = mysql_query("(SELECT title, city, ad_image, rent, uniqid FROM rentals WHERE front_page_ad = '1' AND paid = '1' AND city = '".mysql_real_escape_string($GLOBALS['user_city'])."')
    UNION ALL
    (SELECT title, city, ad_image, rent, uniqid FROM rentals WHERE front_page_ad = '1' AND paid = '1' AND province = '".mysql_real_escape_string($GLOBALS['user_province'])."' )
    UNION ALL
    (SELECT title, city, ad_image, rent, uniqid FROM rentals WHERE front_page_ad = '1' AND paid = '1' )" or die(mysql_error());

我会做类似的事情吗...

            $myquery_mysql = mysql_query("(SELECT title, city, ad_image, rent, uniqid count(if title > 5) THEN FROM rentals WHERE front_page_ad = '1' AND paid = '1' )"
    UNION ALL
    (SELECT title, city, ad_image, rent, uniqid FROM rentals WHERE front_page_ad = '1' AND paid = '1' AND province = '".mysql_real_escape_string($GLOBALS['user_province'])."' ) 
    ELSE FROM rentals WHERE front_page_ad = '1' AND paid = '1' )" END ;

or die(mysql_error());

我知道这是不对的,但我只是想弄清楚。

【问题讨论】:

    标签: mysql count rows min


    【解决方案1】:

    您可以在末尾添加一个LIMIT 5,这样它就会使用所有联合执行整个查询,然后选择前 5 个结果,只要您不给它一个 ORDER BY 它应该将它们列在你做工会的顺序。

    因此,如果第一个查询有 5 个结果,它将只获取这些结果,但如果没有,它将从接下来的 2 个联合中获取结果。只要您的工会不是很耗时,这似乎是一个很好的行动方案。

    【讨论】:

    • 我在想这个,但我需要选择所有查询,所以如果有 13 个我需要全部 13 个,thnaks
    • 哦,我明白了,我的错误。我不知道是否有一种优雅的方法可以做到这一点。在最坏的情况下,您可以先进行查询以计算有多少这样的结果,如果少于 5 个,则使用我的方法,如果没有,您只需选择您所在城市和省份的所有结果。
    • 啊,我在想可能没有办法做到这一点。我猜我的新方法是code $city_num_rows = mysql_num_rows($myquery_mysql);if ($city_num_rows < 5) { //do here } - 谢谢
    【解决方案2】:

    我愿意:

    • 使用所有比较左连接
    • 按比较值排序desc,因此匹配值排序高于非匹配值(即null
    • 使用限制5

    【讨论】:

      猜你喜欢
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-25
      • 2020-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多