你的版本支持子查询么,支持的话可以select * from 表 where 价格 in(select min(价格) from 表);

解决方案 »

  1.   

    支持subquery那就简单到中学生都会拉
      

  2.   

    select * from table where 价格=MIN(价格)
      

  3.   

    SELECT a.* FROM `table ` AS a,`table ` AS b HAVING a.价格= MIN(b.价格);
      

  4.   

    在MySQL中下列语句还不能工作: SELECT * FROM table1 WHERE id IN (SELECT id FROM table2);
    SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM table2);然而,在很多情况下,你可以重写查询,而不用子选择: SELECT table1.* FROM table1,table2 WHERE table1.id=table2.id;
    SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id where table2.id IS NULL对于更复杂的子查询,通常你可以创建临时的表保存子查询。然而在一些情况下,这种选择将行不通。最经常遇到的情形是DELETE语句,对于它标准SQL不支持联结(join)(除了在子选择)。对于这种情况,有2个可用选择,直到子选择被MySQL支持。 第一个选择是使用一种过程化的程序语言(例如Perl或PHP)来提交一个SELECT查询获得要被删除记录主键,并然后使用这些值构造DELETE语句(DELETE FROM ... WHERE ... IN (key1, key2, ...))。 第二个选择是使用交互式SQL自动构造一套DELETE语句,使用MySQL扩展CONCAT()(代替标准||操作符)。例如: SELECT CONCAT('DELETE FROM tab1 WHERE pkid = ', tab1.pkid, ';')
      FROM tab1, tab2
     WHERE tab1.col1 = tab2.col2;你可以把这个查询放在一个脚本文件并且从它重定向输入到mysql命令行解释器,将其输出作为管道返回给解释器的第2个实例: prompt> mysql --skip-column-names mydb < myscript.sql | mysql mydbMySQL仅支持INSERT ... SELECT ...和REPLACE ... SELECT ...,独立的子选择将可能在3.24.0得到,然而,在其他环境下,你现在可以使用函数IN()。 
      

  5.   

    mysql> use haha;
    Database changed
    mysql> create temporary table tmp select min(price) as price from haha;
    Query OK, 1 row affected (0.08 sec)
    Records: 1  Duplicates: 0  Warnings: 0mysql> select a.* from haha a join tmp b on a.price=b.price;
    +----+------+-------+
    | id | name | price |
    +----+------+-------+
    |  1 | A    |   100 |
    | 17 | C    |   100 |
    | 20 | F    |   100 |
    | 22 | H    |   100 |
    +----+------+-------+
    4 rows in set (0.00 sec)mysql> drop table tmp;
    Query OK, 0 rows affected (0.00 sec)
      

  6.   

    谢谢,我在问之前就已经这么做了但是想看看是否有不用temp table的方法