SQL:如何在一个查询中选择具有最短,最长和平均长度文本消息的文本?

时间:2017-06-07 01:37:28

标签: sql

问题:查找包含最短,最长和平均长度文本消息的推文。

我的SQL查询:

<% if flash[:notice] %>
    <div class="notice"><%= flash[:notice] %></div> <% end %>


<div class="login-page">   <div class="form">
    <form class="register-form">
      <input type="text" name="login[email]" placeholder="Email"/>
      <input type="password" name="login[senha]" placeholder="Senha"/>
      <button>Cadastrar</button>
      <p class="message">Já é registrado? <a href="#">Login</a></p>
    </form>
    <form class="login-form" action="/login/acessorecebendo" method="post">
      <input type="text" name="login[email]" placeholder="email"/>
      <input type="password" name="login[senha]" placeholder="password"/>
      <button>login</button>
      <p class="message">Não está registrado <a href="#">Criar uma conta</a></p>
    </form>
    <% if session[:user] %>
        <a href="/login/sair">Sair sessão <%= @user.nome %> </a>
    <% end %>   </div> </div>

但结果显示:
OperationalError:near&#34; SELECT&#34 ;:语法错误

1 个答案:

答案 0 :(得分:0)

你很亲密。但是JOIN是更好的方法:

SELECT t.*
FROM Tweet t JOIN
     (SELECT max(length(text)) as maxt, min(length(text)) as mint, 
             avg(length(text)) as avt
      FROM Tweet
     ) tt
     on length(t.text) in (tt.maxt, tt.mint, tt.avgt);

我不认为avg(length(text))有意义,除非你发言或以某种方式将其转换为整数。也就是说,某些数据库将返回avg()的整数,因此它可能在您的数据库中有效。

您的查询不起作用,因为子查询返回三列;然而,它只是被比作一个。某些数据库允许使用in的元组。即便如此,操作数的长度也不匹配。