2011-05-20 75 views
0

我有MySQL查询:如何正确地在mysql中查询mysql?

SET @row = 0; 

SELECT @row := @row + 1 AS Row, col1 
    FROM table1; 

但如何正确地把里面$sql=",,,,,,";

我TRID:

SET @row = 0; 
$sql = "SELECT @row := @row + 1 AS Row, col1 
      FROM table1"; 

但我认为它不工作,那么尝试:

$sql = "SELECT @row := @row + 1 AS Row, col1 
      FROM table1, 
       (SELECT @rownum = 0)"; 

没有错误,但我得到结果的行空 这真正的查询:

SELECT @rownum:[email protected]+1 AS No, B.Serial_number,A.Symptom 
     FROM oqc_defect A 
     JOIN (SELECT @rownum := 0) r 
     LEFT JOIN inspection_report B 
     ON A.Model = B.Model 
     WHERE Appearance = 'NG' OR Packing = 'NG' OR Accesories = 'NG' OR Tuner = 'NG' OR General_operation = 'NG' 
     GROUP BY A.Model 

我得到的结果一样:

No Serial_number Symptom 
1 106X0336 Remocon Wrong Part Number 
6 106X0528 Trimplate have scratch 
7 106V8024 IC breaket not lock to top chassis 
8 106X5890 IC breaket not lock to top chassis 
9 106X5866  IC breaket not lock to top chassis 
10 106X0781 Finder crack at bottom side 
+0

不要在DB中计算rownum!这是应用程序的工作。 – binaryLV 2011-05-20 07:22:23

回答

1

用途:

$sql = "SELECT @rownum := @rownum + 1 AS Row, 
       t.col1 
      FROM table1 t 
      JOIN (SELECT @rownum := 0) r "; 

我纠正:

  • 您需要:=设置一个变量
  • 你声明的变量是@rownum,不@row你用来添加自己

PHP的mysql_query不支持多个查询,因此使用SET的版本不会像您发布的那样工作。我提供的解决方案不需要SET语句,因此它可以在mysql_query中运行...

+0

@OMG:它显示不顺序,但是..我会发布。 – nunu 2011-05-20 07:04:58

+0

@nunu:表是MyISAM吗?我遇到了针对MyISAM表的这个查询的问题。 – 2011-05-20 07:06:00

+0

@OMG:是的,当然。你有没有看到我更新的问题? – nunu 2011-05-20 07:09:35