【问题标题】:return single value of first row when query return more than one row查询返回多行时返回第一行的单个值
【发布时间】:2015-11-14 06:37:01
【问题描述】:

下表是我的数据库表question

当我使用这个函数传递$ID=2时,

function getFirstID($ID) {

        $checkQ = "SELECT * FROM tabel WHERE quiz_id = '$ID";
        $query = $this->db->query($checkQ);

        if ($query->num_rows() > 0) {
            return $query->result();
        } else {
            return NULL;
        }            
}

结果是,

我想在结果中返回第一行的ID。所以输出应该是 4。

我应该在我的函数中做哪些修改以获得预期的输出?

【问题讨论】:

  • 请提供预期的输出。以便更好地理解..
  • 您的问题不清楚,请阅读stackoverflow.com/help/how-to-ask
  • 什么意思when quiz_id changes 1 or 2
  • @user3002114 : 不够...
  • 当你通过 2 时,num_rows 如何是 3?表中只有 2 行。阅读如何提问并提出更好的问题

标签: mysql sql codeigniter


【解决方案1】:
SELECT `ID` FROM tabel WHERE quiz_id = '$ID ORDER BY `ID` LIMIT 1

请试试这个查询。

【讨论】:

  • 这如何解决您的问题?你的输出说$ID=2你想要两行,如果你已经按ID过滤,按ID排序不会做任何事情
【解决方案2】:

您可以在这种情况下使用ROWNUM,LIMIT,TOP,PERCENT

1.) 处理行号:

SELECT columnNames FROM Table_name
WHERE ROWNUM <= number;

2.) 可以限制行数:

SELECT columnNames FROM Table_name LIMIT number;

3.) 可以从TOP中选择你想要的行数

SELECT TOP 5 * FROM Table_name;

4.) 可以从所有结果中选择百分比:

SELECT  TOP 25 PERCENT * FROM Table_name;

第4个跟别人比起来并不好,但我们可以用。

关于你的情况,我们可以这样假设这四个原因:

SELECT * FROM tabel WHERE quiz_id = '$ID AND ROWNUM <= 1;

SELECT * FROM tabel WHERE quiz_id = '$ID AND LIMIT 1;

SELECT TOP 1 * FROM tabel WHERE quiz_id = '$ID;

SELECT 50 PERCENT * FROM tabel WHERE quiz_id = '$ID;

【讨论】:

    【解决方案3】:

    在 CodeIgniter 中

     $this->db->select('ID');
     $this->db->from('tabel');
     $this->db->where('quiz_id',$ID);
     $this->db->order_by('ID');
     $q=$this->db->get();
     if ($q->num_rows() > 0) {
            return $q->row();   # Returns single row
        } else {
            return NULL;
        }  
    

    试试这个查询

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多