mariadb 如果不存在其他类似记录,则返回一条记录

vnzz0bqm  于 2023-06-22  发布在  其他
关注(0)|答案(1)|浏览(137)

我有一个问题要问,它与Mariadb SQL语言>10.4有关。
我有这个数据库,里面有这些字段和输入的这些值
| ir_f| id_r|描述|
| - -----|- -----|- -----|
| 1| 0| 1号线|
| 1| 0|第2行|
| 1| 0|第3行|
| 2| 0|第15行|
| 2| 0| 16线|
| 2|十七岁|第16行修改|
| 2| 0| 17号线|
| 2| 0| 18号线|
我认为要描述我需要什么,最好报告我需要得到的2张表。
如果我使用“select * from database where id_f = 1 and id_r =”,它会返回这些值
| ir_f| id_r|描述|
| - -----|- -----|- -----|
| 1| 0| 1号线|
| 1| 0|第2行|
| 1| 0|第3行|
但是,如果id_r = 17的行存在,我如何写入select,使它返回id_f = 2和(id_r = 0或id_r = 17),但不返回id_r = 0的行?
| ir_f| id_r|描述|
| - -----|- -----|- -----|
| 2| 0|第15行|
| 2|十七岁|第16行修改|
| 2| 0| 17号线|
| 2| 0| 18号线|
解释得更清楚些。id_r是餐厅的引用,id_f是特许经营的引用。
此数据库用于创建您自己的自定义网页。
id_r = 0表示它适用于所有餐厅,id_r > 0表示记录适用于单个餐厅。
因此,如果行包含大于0的数字,则必须返回它,而不是包含0的数字。
我不知道是我解释得更好还是我搞砸了
我希望这次我说得更清楚...但我不知道该怎么解释如果你看看这些表格,我想你可以看到我想要达到的目标
如果需要,我还可以添加一个附加字段
谢谢你的帮助

yhxst69z

yhxst69z1#

使用内部查询选择max值并连接回同一个表以获得结果:

SELECT a.*
FROM tbl a
JOIN ( SELECT ir_f, MAX(id_r) as id_r FROM tbl WHERE ir_f = :restaurant: GROUP BY ir_f) m
  USING (ir_f, id_r)

相关问题