假设我有一个如下表:
Table name: trial
ID | Date | Name | Status | Type
1 | 2017-06-01 | ABC | Not Active | Food
2 | 2017-06-02 | DEF | Not Active | Food
3 | 2017-06-03 | GHI | Active | Food
要从上表中检索type = FOOD的最后一个数据,我使用此查询
SELECT * FROM `trial` WHERE type = 'FOOD' order by id DESC limit 1
如果我想从type = FOOD中检索最新数据,但是如果status = active的数据,则会获取此数据。
假设表条件是这样的。
ID | Date | Name | Status | Type
1 | 2017-06-01 | ABC | Active | Food
2 | 2017-06-02 | DEF | Not Active | Food
3 | 2017-06-03 | GHI | Not Active | Food
我使用像这样的查询
SELECT * FROM `trial` WHERE type = 'FOOD' AND status = 'ACTIVE' order by id DESC limit 1
但如果表格条件随着这个假设而改变怎么办呢。
ID | Date | Name | Status | Type
1 | 2017-06-01 | ABC | Not Active | Food
2 | 2017-06-02 | DEF | Not Active | Food
3 | 2017-06-03 | GHI | Not Active | Food
如何从type = FOOD中检索最新数据,但是如果数据类型=具有状态的食物处于活动状态,则使用status = active的数据,但如果没有活动状态则使用最后一个数据
我应该使用什么SQL查询?
答案 0 :(得分:0)
首先学习本手册manual ..本手册将帮助您从数据库中检索数据。
您可以使用select
命令从数据库中获取数据,并使用DESC
获取最新记录
select * from table_name where Status='Active' ORDER BY id DESC;;
答案 1 :(得分:0)
从TabelName中选择*,其中status =“Active”
答案 2 :(得分:0)
在ORDER BY中使用where子句:
select * from table_name where Status='Active' ORDER BY id DESC;
答案 3 :(得分:0)
请使用下面提到的查询。
SELECT * from table_name WHERE Status='Active' AND Type='Food' ORDER BY id DESC;
答案 4 :(得分:0)
如果我理解正确的话,你想要获取最新数据,如果全部没有活动,但是如果有活跃状态你想要那些吗?
试试这个
Select * from your_table
WHERE Type = 'Food'
ORDER BY Status != "Active" ASC, Date DESC
LIMIT 1
或在Codeigniters Querybuilder中
$this->db
->select("*")
->from("your_table")
->where("Type","Food")
->order_by("Status != 'Active'", "ASC")
->order_by("Date","DESC")
->limit(1);
答案 5 :(得分:0)
$where = array('status'=>'Active' ,'type' =>'Food');
$this->db->where($where);
$this->db->order_by('Date','ASC');
$this->db->get('_table_name');
答案 6 :(得分:-1)
尝试以下查询
select * from table_name where Status='Active';