求mysql語句(insert之前先查詢)

來源:互聯網
上載者:User
資料表如下:

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上都是無關痛癢的聊天,沒人答

你可以寫預存程序的,可以完美解決你的問題。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.