【问题标题】:How I can use a range between 0-20 on this sql query?如何在此 sql 查询中使用 0-20 之间的范围?
【发布时间】:2015-03-26 09:56:59
【问题描述】:

如何在这个 sql 查询中使用 0-20 之间的范围?

  $sql = 'SELECT * FROM t1
          LEFT JOIN t2 ON t2.wid = t1.wid  
          UNION
          SELECT * FROM t1
          RIGHT JOIN t2 ON t2.wid = t1.wid
          limit 0, 20';
  $result = db_query($sql);//->fetchField();

【问题讨论】:

  • where foo BETWEEN 0 AND 20 在中间?我们可以继续猜测,但这个问题确实是无可救药的不清楚。明确你想要什么!
  • 我希望,每次运行此行时,每次都采用不同的行..
  • 这更没有意义。请具体。示例数据可能有助于说明您的问题。
  • 我想当这些行运行时从这些表中取 20 行,然后当这些行重新运行时取其他 20 行.. 我再清楚不过了..

标签: mysql sql database drupal drupal-7


【解决方案1】:

将 LIMIT 传递到您的查询中。并且您的限制每次都会变化,例如

$sql = 'SELECT * FROM (SELECT * FROM t1
          LEFT JOIN t2 ON t2.wid = t1.wid  
          UNION
          SELECT * FROM t1
          RIGHT JOIN t2 ON t2.wid = t1.wid) AS A LIMIT'.$start.','.$end

【讨论】:

  • 开始和结束会是什么?
  • 我真的很想要这样的东西,你太棒了,谢谢!!
【解决方案2】:

请清理您的查询,因为这很容易被 SQL 注入。对于drupal,它应该是:

$result = db_query('SELECT * FROM (SELECT * FROM t1
      LEFT JOIN t2 ON t2.wid = t1.wid  
      UNION
      SELECT * FROM t1
      RIGHT JOIN t2 ON t2.wid = t1.wid) AS A LIMIT :min, :max',
      array('min' => $min, 'max' => $max));

有更好的 Drupal 方法来编写它,但只要您将变量作为参数传递就可以了。

【讨论】:

    猜你喜欢
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 2014-12-06
    • 1970-01-01
    相关资源
    最近更新 更多