這是我的表結構,在這裏我需要交換項目。這意味着,你可以看到類型3總是配對(type 3 items are always paired
)。 我剛剛命名配對項目,理解第一對是主,第二個是子。 So master of the pair should not come 5,10 and 15 positions
如果說到那個地方,我需要到下一個項目換到那個地方(neaxt項目將分吧不應該被視爲下一個項目)mysql與行號交換項目
例如
pid 10 (comes in 10 position) i need to swap it like this
pid type name
.. .. ..
10 2 B2
11 3 E1(master)
12 3 A2(sub)
.. .. ..
表
pid type pname
1 1 A
2 1 B
3 2 C
4 3 D(mater)
5 3 E(sub)
6 1 A1
7 2 B1
8 1 C1
9 2 D1
10 3 E1(master)
11 3 A2(sub)
12 2 B2
13 1 C2
14 2 D2
15 1 E3
截圖
獲得進一步幫助
我給你的表結構和測試數據,如果您有任何IDEA跟我分享一下!
創建查詢
CREATE TABLE IF NOT EXISTS `table_swap1` (
`pid` int(11) NOT NULL AUTO_INCREMENT,
`type` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
PRIMARY KEY (`pid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=17;
插入查詢
INSERT INTO `table_swap1` (`pid`, `type`, `name`) VALUES
(1, 1, 'A'),(2, 1, 'B'),(3, 2, 'D'),(4, 3, 'E(master)'),
(5, 3, 'f(sub)'),(6, 1, 'A1'),(7, 2, 'B1'),(8, 1, 'C1'),
(9, 2, 'D1'),(10, 3, 'E1(master)'),(11, 3, 'A2(sub)'),(12, 2, 'B2'),
(13, 1, 'C2'),(14, 2, 'D2'), (15, 1, 'E2');
我的工作和結果
SELECT aa.pid, (
CASE aa.pid
WHEN bb.apid
THEN bb.atype
WHEN bb.bpid
THEN bb.btype
WHEN bb.cpid
THEN bb.ctype
ELSE aa.type
END
)
TYPE , (
CASE aa.pid
WHEN bb.apid
THEN bb.aname
WHEN bb.bpid
THEN bb.bname
WHEN bb.cpid
THEN bb.cname
ELSE aa.name
END
)name
FROM (
SELECT a.pid +1 apid, a.TYPE atype, a.NAME aname,
b.pid +1 bpid, b.type btype, b.name bname,
c.pid -2 cpid, c.type ctype, c.name cname
FROM table_swap1 a, table_swap1 b, table_swap1 c
WHERE MOD(a.pid, 5) =0
AND a.pid +1 = b.pid
AND a.type =3
AND a.type = b.type
AND a.pid +2 = c.pid
)bb, table_swap1 aa
GROUP BY pid
此查詢做了我究竟需要 ......但對我來說pid是主鍵。 所以我不能得到1至15的結果 的順序。所以,我可以做到這一點的行號... 我該怎麼辦
所有種類的建議,歡迎甚至在PHP 讓我的解決方案這是可能在MySQL或任何其他方式做到這一點..
我不明白你的後...爲什麼你會需要「交換」的任何項目在mysql中呢?Swap帶來了取出記錄並將其重新插入到不同位置的映像,但這在mysql中毫無意義,因爲您可以按照自己想要的方式篩選記錄並對其進行排序。也許你應該更好地解釋一下你究竟是什麼。 – 2011-04-15 10:26:11
是啊,其實我列出的產品有三排...... 1型和2型產品或單獨出售,但配對產品將在一個大盒子中,在5,10和15個位置..沒有空間放置該盒子我喜歡將下一個項目交換到那個地方... – Gowri 2011-04-15 10:31:44
UPDATE或SELECT? – 2011-04-17 05:59:15