过滤 SQL 查询

Posted

技术标签:

【中文标题】过滤 SQL 查询【英文标题】:Filtering SQL queries 【发布时间】:2021-12-29 08:30:32 【问题描述】:

我正在创建一个 php 查询,试图从特定的 SQL 表中过滤特定的事件。 例如,表名为 tbl_events,一个特定的列显示用户 ID 数据,我们称之为 USER_ID 该表有超过 50.000 条数据行,因此如果我尝试使用 php 对其进行过滤,则需要花费太多时间。所以我的尝试是在向 php 表显示查询之前用 SQL 过滤它,看看它是否变得更快。

我想过滤查询,以便不显示拥有 ID 的人,比如说“2” 我的代码如下(显然它不起作用)

$GetEventsList = GetDataWhere("tbl_events","USER_ID!=2",0);

我是 SQL 命令的新手,所以请耐心等待 :)

【问题讨论】:

您必须显示该 GetDataWhere 函数的内容以获得更准确的答案;但你目前的做法是个坏主意。如果它根本不起作用,那可能是因为您的数据库不理解 != 运算符。大多数 dbms 使用 <> 代替,但是将数据(在这种情况下,数字 2,直接写入 SQL 字符串是一个非常糟糕的主意(想想 SQL injection)。然而,正确的做法完全取决于什么GetDataWhere 函数包含。 不工作怎么办?你得到什么错误? GetDataWhere 是什么样的?你试过USER_ID <> 2吗? 您的表是否在字段 USER_ID 上有索引? 【参考方案1】:

这就是你要找的吗?

查询

SELECT * FROM tbl_events WHERE USER_ID != '2'

所以要使用 php 来实现这一点,我会建议

$servername = "Your server ip here";
$username = "Database_username_here";
$password = "Database_password_here";
$dbname = "Database_name_here";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) 
  die("Connection failed: " . $conn->connect_error);


$sql = "SELECT * FROM tbl_events WHERE USER_ID != '2'";

// Run $sql content as sql script in db.
$result=$conn->query($sql);

【讨论】:

以上是关于过滤 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server-聚焦过滤索引提高查询性能

SQL 查询过滤记录

sql语句查询过滤重复数据

查询SQL,写一个查询SQL用来过滤表中数据,类似select ... from?

过滤 SQL 查询返回的结果

SQL查询和过滤数据