SQL查询:Where, Like, OR -将这些进行组合


SQL Query: Where, Like, OR - Combing these

在我的数据库中,我有一个名为'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的集合。