我有桌子:
* ruletbl
| id_rule | code_rule |
-----------------------
| 1 | R01 |
| 2 | R01 |
| 3 | R01 |
| 4 | R02 |
| 5 | R02 |
| 6 | R02 |
-----------------------
和第二张表* detailRuletbl:
| id_detailRule | id_rule | id_sym | codeDetailrule | orderNO |
---------------------------------------------------------------------
| 1 | 1 | 1 | R01#1 | 1 |
| 2 | 1 | 2 | R01#1 | 1 |
| 3 | 1 | 3 | R01#1 | 1 |
| 4 | 2 | 4 | R01#2 | 2 |
| 5 | 2 | 1 | R01#2 | 2 |
| 6 | 2 | 2 | R01#2 | 2 |
| 7 | 3 | 4 | R01#3 | 3 |
| 8 | 3 | 3 | R01#3 | 3 |
| 9 | 3 | 1 | R01#3 | 3 |
| 10 | 4 | 6 | R02#1 | 1 |
| 11 | 4 | 7 | R02#1 | 1 |
| 12 | 4 | 5 | R02#1 | 1 |
| 13 | 5 | 4 | R02#2 | 2 |
| 14 | 5 | 1 | R02#2 | 2 |
| 15 | 5 | 2 | R02#2 | 2 |
| 16 | 5 | 8 | R02#2 | 2 |
| 17 | 6 | 6 | R02#3 | 3 |
| 18 | 6 | 8 | R02#3 | 3 |
| 19 | 6 | 2 | R02#3 | 3 |
| 20 | 6 | 1 | R02#3 | 3 |
--------------------------------------------------------------------
如果“codeDetailrule与”R01#1和R01#2相同,我想从输入一个数组(1,2)和MIN(orderNo)中的“和”条件中选择那些表,所以首先用“和”消除“condtion喜欢这段代码:
SELECT codeDetailrule, orderNo
FROM detailRuletbl
WHERE id_sym
IN ( 1,2 )
GROUP BY codeDetailrule
HAVING COUNT( * ) =2
结果:
| codeDetailRule | orderNo |
----------------------------
| R01#1 | 1 |
| R01#2 | 2 |
| R02#2 | 2 |
| R02#3 | 3 |
----------------------------
如果我们使用MIN(orderNO),结果应为:
| codeDetailRule | orderNo |
----------------------------
| R01#1 | 1 |----------------------> this is my expect result
| R02#2 | 2 |
----------------------------
任何人都可以帮助我吗?
直到现在这是我的试用版:
SELECT codeDetailrule, orderNo
FROM detailRuletbl
WHERE id_sym
IN ( 1,2 )
GROUP BY codeDetailrule
HAVING COUNT( * ) =2
AND orderNo= ( SELECT MIN( X.orderNo) FROM detailRuletbl,
(SELECT codeDetailrule, orderNoFROM detailRuletbl
WHERE id_sym IN ( 1, 2 ) GROUP BY codeDetailrule
HAVING COUNT( * ) =2
)
AS X
)
和结果:
| codeDetailrule | orderNo |
-------------------------------
| R01#1 | 1 |
-------------------------------
任何人有什么想法?请帮忙。
答案 0 :(得分:0)
SELECT codeDetailrule, orderNo
FROM detailRuletbl
WHERE id_sym
IN ( 1,2 ) AND orderNo IN (
SELECT MIN(orderNo) FROM detailRuletbl
GROUP BY orderNo
HAVING COUNT(*) = 2
)
如果我误解了你的想法,我很抱歉
答案 1 :(得分:0)
我有MIN()函数的严格答案,并检查“和”condtion
SELECT a.codeRule, a.id_rule, MIN( a.orderNo)
FROM (ruletbl AS b, detailRuletbl AS a)
INNER JOIN (
SELECT h.codeDetailrule, h.id_rule AS irule, i.codeRule AS
krule, MIN( h.oderNo) AS norderno
FROM detailruletbl AS h, ruletbl AS i
WHERE h.id_rule = i.id_rule
AND h.id_sym
IN ( 1,2 )
GROUP BY h.codeDetailrule
HAVING COUNT( * ) =2
)sMin ON a.id_rule= sMin.irule
GROUP BY sMin.krule