資料表如下:
id parent a b others---------------------------------------1 0 7 8---------------------------------------2 1 8 7---------------------------------------3 1 7 8---------------------------------------4 1 8 7---------------------------------------
比如:現在已知a=7、b=8,但不知道parent的值,插入之前要查詢資料表中已存在a=7 && b=8
的,或者a=8 && b=7
的那條記錄的parent的值(保證資料表中滿足a=7 && b=8
,或者a=8 && b=7
的那些記錄的parent都是同一個值)。
請問如何寫sql?先select後insert?一條語句能搞定麼
回複內容:
資料表如下:
id parent a b others---------------------------------------1 0 7 8---------------------------------------2 1 8 7---------------------------------------3 1 7 8---------------------------------------4 1 8 7---------------------------------------
比如:現在已知a=7、b=8,但不知道parent的值,插入之前要查詢資料表中已存在a=7 && b=8
的,或者a=8 && b=7
的那條記錄的parent的值(保證資料表中滿足a=7 && b=8
,或者a=8 && b=7
的那些記錄的parent都是同一個值)。
請問如何寫sql?先select後insert?一條語句能搞定麼
@Eapen 參考我對你的回答的評論。
@xaero 我覺得你的問題把我們都帶偏了。
對於訊息的首發來說是不存在parent這個屬性的,因為訊息是按照時間順序排列的。只有論壇的文章回複才有parent的問題,這個parent可以在前台顯示的時候使用,可以把相關的討論集中起來便於閱讀,因為這種結構打破了發帖時間的規律,所以才需要額外的指定parent。
明顯訊息不存在這個問題,就算你的訊息是針對某個話題產生的,那也應該是reference_id而不是parent。
你們覺得呢?
我理解你的意思了。這可以通過另一個表去維護。
table message_groups
group_id users
1 7,8 //資訊交流者,按照使用者id從小到大排列,用逗號分隔
2 7,9
...
table messages
group_id from_user to_user message time
1 7 8 Test1 ....
1 8 7 Re: Test1 ....
這樣你覺得有協助嗎?
IF EXISTS (SELECT * FROM Table_Name WHERE (a='7' and b='8') OR (a='8' and b='7'))BEGIN --EXISTENDELSEBEGIN INSERT INTO Table_Name(Column,...) VALUES('')END
有點沒懂 為什麼不知道parent的值?在讀取列表的時候就應該知道id的值了呀寫入的時候直接帶上就行
oschina的私信功能就是這樣的,明明是已經存在的一對使用者會話,我不“回複”,點“新發送”,也會歸納為原先的會話。。。不知道是怎麼實現的。。。。oschina上都是無關痛癢的聊天,沒人答
你可以寫預存程序的,可以完美解決你的問題。