在我的数据库中,我有一个名为'model'的表。下面是它们大部分的样子:
iphone 4 16gb white t-mobile
和另一个问题:
iphone 4 32gb black kpn
现在我想用查询选择那些不同的iphone。
$query = mysql_query("SELECT * FROM db WHERE model LIKE '%iphone 4%' AND '%16gb%'") or die(mysql_error());
我希望我的查询寻找"iphone 4",然后寻找"16gb"。所以它只能输出16GB的iPhone 4。上面的查询不起作用。是我的语法问题吗?或者这是不可能的?
试试这个查询:
SELECT * FROM db WHERE model LIKE '%iphone 4%' AND model LIKE '%16gb%'
SQL中不能有以下表达式:
model LIKE '%iphone 4%' AND '%16gb%'
你需要完整地陈述两个表达式:
model LIKE '%iphone 4%' AND model LIKE '%16gb%'
$query = mysql_query("SELECT * FROM db WHERE model LIKE '%iphone 4%' AND model LIKE '%16gb%'") or die(mysql_error());
修改sql查询:
$query = mysql_query("SELECT * FROM db WHERE model LIKE '%iphone 4%' AND '%16gb%'") or die(mysql_error());
:
$query = mysql_query("SELECT * FROM db WHERE model LIKE '%iphone 4%' AND model LIKE '%16gb%'") or die(mysql_error());
差不多了,但你需要明确地说明16gb
的比较SELECT * FROM db WHERE model LIKE '%iphone 4%' AND model Like'%16gb%'
语法
$query = mysql_query("SELECT * FROM db WHERE model LIKE '%iphone 4%16gb%'") or die(mysql_error());
或者注意,这里不考虑ORDER,而上面的ORDER是考虑的。
$query = mysql_query("SELECT * FROM db WHERE model LIKE '%iphone 4%' AND model like '%16gb%'") or die(mysql_error());
我认为问题是你需要一个子查询,即
select *
from (select * from db where model LIKE '%iphone 4%') xx
where xx.model like '%16gb%'
内部查询构建所有iphone 4型号的集合,外部查询获得16gb的集合。