SQL查询:Where,Like,OR - Combing这些

时间:2011-11-28 22:18:31

标签: php sql

在我的数据库中,我有一个名为'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。上面的查询无效。这是我的语法吗?或者这样不可能吗?

6 个答案:

答案 0 :(得分:3)

$query = mysql_query("SELECT * FROM db WHERE model LIKE '%iphone 4%' AND model LIKE '%16gb%'") or die(mysql_error());

答案 1 :(得分:3)

尝试此查询:

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%'

答案 2 :(得分:0)

从以下位置更改您的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());

答案 3 :(得分:0)

你几乎在那里,但你需要在16gb上明确说明比较

SELECT * FROM db WHERE model LIKE '%iphone 4%' AND model Like'%16gb%'

答案 4 :(得分:0)

这是语法

$query = mysql_query("SELECT * FROM db WHERE model LIKE '%iphone 4%16gb%'") or die(mysql_error());

或者注意,这并没有考虑ORDER,如上所述。

$query = mysql_query("SELECT * FROM db WHERE model LIKE '%iphone 4%' AND  model like '%16gb%'") or die(mysql_error());

答案 5 :(得分:0)

我认为问题是你需要一个子查询,即

select * 
from (select * from db where model LIKE '%iphone 4%') xx
where xx.model like '%16gb%'

内部查询构建了一组所有iphone 4模型,外部查询获得了16gb的模型。