SQL查询根据其他值查找值

时间:2017-05-04 19:07:25

标签: mysql sql

我正在开发一个文本管理应用程序。有许多不同语言的短文本,需要适合具有给定宽度(px)和行数的文本区域。目标是找到所有不使用可用线宽超过一定超出的文本,以便将其显示给用户进行编辑。
例: enter image description here 在左侧文本中,每行只占用可用空间的四分之一,这很糟糕。右边的文字没问题。

我有这个表lengthcheckresult,左边的例子看起来像这样

id, idText, lineorder, usedspace, availablespace
3   87      1          111        430
4   87      2          116        430
5   87      3          171        430
6   87      4          120        430

和正确的例子一样:

id, idText, lineorder, usedspace, availablespace
3   87      1          408        430
4   87      2          120        430
5   87      3            0        430
6   87      4            0        430

所以我需要一个SQL查询,它查找所有带有行的文本,这些行占用的空间小于可用空间的x%,后面跟着更多的行。你认为这有可能吗?我不知道如何开始。

1 个答案:

答案 0 :(得分:1)

使用类似的东西(对表名等做出假设。)

select
  A.id
--, (anything else you want)
from dbname.dbo.tblname A
where usedspace > 0
  and availablespace > 0 -- Avoid divide by zero
  and usedspace / availablespace < 0.5  -- Assume less than 50%? Pick your value.
  and A.idText = 1234 -- The text of interest
  and exists
  ( select B.id from dbname.dbo.tblname B
    where B.idText = A.idText        -- Part of same text
      and B.lineorder > A.lineorder  -- Only later lines
      and B.usedspace > 0            -- Only non-empty lines
  )
-- order by etc, as required.

这会查找短于任意百分比(在这种情况下为50%)的文本片段,这些文本也包含以下非空文本。