mysql从col1中选择不同的行WHERE col2 = x

时间:2013-03-12 17:50:50

标签: php mysql distinct

我试图从'具体'中选择不同的名称,但仅限于col Type =特定值。

例如我有

rowID    Type   Specifically
1        cat    Ocicat
2        cat    Bombay
3        cat    Bombay
4        cat    Bengal
5        cat    Savannah
6        dog    Collie
7        dog    Keeshond
8        dog    Pug
9        dog    Keeshond
10       dog    Pug
11       dog    Doberman
12       Horse  n/a

我想读出类似

的内容
type=cat and specific=Bengal
type=cat and specific=Bombay
type=cat and specific=Ocicat
type=cat and specific=Savannah

我目前有这个,但它给了我'未定义的索引:输入'

$Result = mysql_query("select distinct Specifically from pet_table WHERE Type='cat' ORDER BY Specifically asc ");

while($row = mysql_fetch_array($Result)) 
{
PRINT("type=".$row['Type']." and specific=".$row['Specifically']."<BR>");
}

我还想做类似的事情,那就是Type不是猫或狗或马......等等。

由于

4 个答案:

答案 0 :(得分:2)

索引不存在,因为您没有选择它。在Type语句中加入SELECT进行修复。

答案 1 :(得分:2)

您收到Undefined Index错误,因为您没有提取Type列,但正在尝试使用它。

将您的查询更改为。

select type, distinct Specifically from pet_table 
WHERE Type='cat' ORDER BY Specifically asc

其次,如果你想要Type而不是cat或dog或horse,你可以使用NOT IN子句。

最后,请不要使用MySQL,因为它没有维护并且已弃用。考虑使用,MySQLi或PDO。

答案 2 :(得分:1)

你想要GROUP BY

SELECT Type, Specifically FROM pet_table
  WHERE Type='cat'
  GROUP BY Specifically
  ORDER BY Specifically asc

答案 3 :(得分:0)

您收到此错误的原因是您没有选择Type

$res = mysql_query("SELECT DISTINCT `Specifically`,`Type` from `pet_table` WHERE `Type`='cat' ORDER BY `Specifically` ASC");

while($row = mysql_fetch_assoc($res))
{
    echo "The type is {$row['Type']} and it is specifically a {$row['Specifically']}
}