我有一個查詢是這樣的:mysql - 想要在IN子查詢中使用LIMIT,如何解決?
SELECT order_number,dr_amount FROM data WHERE order_number IN (select order_number from data where dr_machine='KBA R-' && dr_code='Tryckning' && dr_amount IS NOT NULL && dr_amount!=0 group by order_number having count(*)<2) && dr_machine='KBA R-' && dr_code='Tryckning' && dr_date>='1381442400' && id>'397433' && order_number!='16952' ORDER BY id limit 1;
的結果是這樣的:
+--------------+-----------+
| order_number | dr_amount |
+--------------+-----------+
| 17047 | 1307 |
+--------------+-----------+
這就是結果,我想進一步處理。 現在我想爲此添加一個子查詢。我需要檢查DATA WHERE oi_amount> 0中的order_number(17047)。 所以我儘量讓查詢此:
SELECT order_number,dr_amount FROM data WHERE order_number IN (select order_number from data where dr_machine='KBA R-' && dr_code='Tryckning' && dr_amount IS NOT NULL && dr_amount!=0 group by order_number having count(*)<2) && dr_machine='KBA R-' && dr_code='Tryckning' && dr_date>='1381442400' && id>'397433' && order_number!='16952' && order_number in (select order_number from data where oi_amount>0) ORDER BY id limit 1;
但是,這給了我:
+--------------+-----------+
| order_number | dr_amount |
+--------------+-----------+
| 17046 | 653 |
+--------------+-----------+
而且這不是我想要的。我想返回沒有結果從該查詢,因爲order_number 17047有oi_amount < = 0(或NULL) 據我所知,當order_number 17047不匹配,然後跳到匹配的下一行,這是order_number 17046. 所以我想與限制1.添加一個子查詢像這樣:
SELECT order_number,dr_amount FROM data WHERE order_number IN (select order_number from data where dr_machine='KBA R-' && dr_code='Tryckning' && dr_amount IS NOT NULL && dr_amount!=0 group by order_number having count(*)<2) && order_number in (select order_number from data where dr_machine='KBA R-' && dr_code='Tryckning' && dr_date>='1381442400' && id>'397433' && order_number!='16952' ORDER BY id limit 1);
但拋出的錯誤:
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
我的表看起來像這樣:
+--------+--------------+-------------+------------+------------+-----------+-----------+
| id | order_number | dr_worker | dr_code | dr_machine | dr_amount | oi_amount |
+--------+--------------+-------------+------------+------------+-----------+-----------+
| 332144 | 16952 | NULL | NULL | NULL | NULL | 2000 |
| 397432 | 16952 | Gustafsson, | Intag | KBA R- | 1 | NULL |
| 397433 | 16952 | Gustafsson, | Tryckning | KBA R- | 1307 | NULL |
| 397434 | 17047 | Gustafsson, | Intag | KBA R- | 1 | NULL |
| 397435 | 17047 | Gustafsson, | Tryckning | KBA R- | 1307 | NULL |
+--------+--------------+-------------+------------+------------+-----------+-----------+
正如你所看到的order_number 17047沒有記錄oi_amount,這就是爲什麼我想返回沒有結果/空結果。
我對如何使用JOIN知之甚少,但也許這就是要走的路?我試過索姆查詢,但我不知道這甚至會工作(我所有的問題與JOIN有一些語法錯誤,所以我放棄了)
問候 尼克拉斯
我想問你在查詢那張表的內容?你想總結order_no的每一個dr_amount嗎?因爲答案很可能對你有所幫助,但是應該有一個更簡單的解決方案來解決你的問題 – Najzero 2014-10-07 11:30:19
最後,我正在尋找dr_code = Tryckning && dr_machine = KBA R-的行,並且「dr_amount與下面的行/下一個」。但結果必須也有oi_amount> 0 – Niclas 2014-10-07 11:36:55