在SQL查询

时间:2016-06-01 12:14:25

标签: sql dql

我在执行任务的两种方式之间挣扎。

我有一套条件,当它们都是真的时候 - 我需要设置" true"在" x"该记录的列属性。

什么是效率更高的&推荐,为什么?

  1. 将此列设置为" false"对于表中的所有记录,然后 运行另一个查询来设置" true"在某些条件下。
  2. 设置" true"如果所有条件都是" true",则运行另一个查询以设置" false"在所有记录中,一个或多个条件失败。
  3. 我不能假设" x"有一些默认值。列需要更改,因为查询应该在一段时间内运行,当需要时,在初始值插入到该列之后,并且某些条件可能会从上次运行此查询时更改。

    也许还有另外一个想法,更有效的是2以上?

    此外,我想了解如何有效地计算查询,类似于编程中高效计算的方式。

2 个答案:

答案 0 :(得分:1)

可能最有效的方法是使用case语句,因为你必须每行只评估一次条件,并且还必须只修改每一行,例如

<?php require "scripts/php/database_connect.php"?>

<?php
   $query = mysqli_query($con, "SELECT * FROM Announcements") or die("Error in query. Details: ".mysqli_error());
   while($row = mysqli_fetch_assoc($query))
   {
?>



   <table class="announcement_blocks">
      <tr>
         <td class="img_s" rowspan="3"><?php echo "<img src='/img/announcement_icon/announcement_imp.png" . "' alt='announcement'>";?></td>
         <td class="title"><?php echo $row['title']; ?></td>       
      </tr>
      <tr>
         <td class="descr"><?php echo $row['description']; ?></td>
      </tr>

         <?php if($row['link'] != "")
         {
           ?>
            <td class="link"><a href="<?php echo $row['link']; ?>"><?php echo $row['link']; ?></a></td>
         <?php
         }
            ?>   
   </table>

<?php
   }
?>

案例陈述至少在Oracle和MS-SQL中可用。不了解其他数据库供应商。

答案 1 :(得分:0)

如果数据结构中的所有条件都相似,我认为这不重要。

如果条件具有不同的数据查询结构(例如,&#34;我的密钥不是表B和#34中的外键;&#34;状态=&#39;加利福尼亚&#39;&# 34;),设置为true然后逐个检查它们(作为一系列SQL语句)是更好的,因为你可以先检查简单的那些,而不用担心已经删除了它们的标志的记录的复杂的。