Mysql更新与交叉引用没有项目

sqyvllje  于 2024-01-05  发布在  Mysql
关注(0)|答案(2)|浏览(180)

对不起,我用德语写的......再一次...
我被卡住了,希望你能帮助我!
我有一个mysql数据库,有两个表:booking和article。它们通过booking.Uid和article.booking_Uid链接。每个booking中可以有几篇文章。
如果此预订中有一篇文章在tid字段中的值为“xxx”,我想将所有预订的booking.status更改为“Ready for price”。到目前为止很简单.此外,此预订中可能没有price = 9999的文章。
最后一点是我失败的地方!
提前感谢您

  1. UPDATE booking
  2. SET status = 'Preis-fertig'
  3. WHERE Uid IN (
  4. SELECT Uid
  5. FROM (
  6. SELECT b.Uid
  7. FROM booking b
  8. JOIN article a ON b.Uid = a.booking_Uid
  9. WHERE a.tid = 'xxx' AND a.price != 9999
  10. ) AS subquery
  11. );

字符串
第二部分错了……

vfhzx4xs

vfhzx4xs1#

如果此预订中有一篇文章在tid字段中具有值“xxx”,则将所有预订的booking.status更改为“Ready for price”。
此外,此预订中可能没有价格= 9999的文章。
如果这些条件必须引用同一行,则:

  1. UPDATE booking b
  2. JOIN article a ON b.Uid = a.booking_Uid
  3. SET b.status = 'Preis-fertig'
  4. WHERE a.tid = 'xxx' AND a.price != 9999

字符串
如果这些条件可能涉及不同的行,则:

  1. UPDATE booking b
  2. JOIN article a ON b.Uid = a.booking_Uid
  3. LEFT JOIN article a1 ON b.Uid = a1.booking_Uid AND a1.price = 9999
  4. SET b.status = 'Preis-fertig'
  5. WHERE a.tid = 'xxx'
  6. AND a1.booking_Uid IS NULL

展开查看全部
qlzsbp2j

qlzsbp2j2#

  1. UPDATE booking
  2. SET status = 'Preis-fertig'
  3. WHERE Uid IN (
  4. SELECT b.Uid
  5. FROM booking b
  6. INNER JOIN article a ON b.Uid = a.booking_Uid
  7. WHERE a.tid = 'xxx'
  8. AND b.Uid NOT IN (
  9. SELECT booking_Uid
  10. FROM article
  11. WHERE price = 9999
  12. )
  13. );

字符串

相关问题