在mysql中选择查询问题

时间:2014-06-18 13:50:47

标签: php mysql sql select

我在下面有一个mysql表

ID     Name
1      AAA
2      BBB
3      CCC

现在我有一个包含列Name的随机值的变量。

$name = "BBB"; //Now this value can be changed that means it can be CCC or AAA 

我希望输出为

ID     Name
2      BBB
1      AAA
3      CCC

如果值为CCC,则输出应如下所示。包含该值的行应位于顶部,然后是其余行。

ID     Name
3      CCC
1      AAA
2      BBB

和往常一样,我坚持使用select查询。普通的选择查询不起作用,因为它只选择一个项目。

$sql = "select * from table where name='".$name."'";

3 个答案:

答案 0 :(得分:1)

也许你可以尝试这样的事情:

SELECT * FROM table WHERE name='".$name."' 
UNION (SELECT * FROM table WHERE name!='".$name."')

答案 1 :(得分:1)

您可以将ORDER BYCASE合并。

类似的东西:

SELECT * FROM your_table
ORDER BY
  CASE WHEN name=? THEN 0
       ELSE 1
  END

请注意,我已经用准备好的语句(问号,PDO或mysqli)直接替换了php变量。

在mysql中它会是这样的:

  CASE WHEN name="' . mysql_real_escape_string($name) . '" THEN 0 

答案 2 :(得分:1)

使用ORDER BY子句中的FIELD()函数可以实现此目的。它的工作原理是指定要排序的列,然后指定要按顺序排序的值。例如:

SELECT * FROM tablename ORDER BY FIELD(Name, 'CCC') DESC;