【问题标题】:Select all rows except three in using MySQL php在使用 MySQL php 时选择除三行之外的所有行
【发布时间】:2018-04-07 17:28:42
【问题描述】:

我试图使用select 语句从某个 MySQL 表中获取所有行,除了 user_id 为 5、6、7 的三个表。下面是代码,但它不能正常工作。请你帮忙。

$sql = "SELECT * FROM login ORDER BY user_id ASC LIMIT 0, 20 WHERE user_id<>5,6,7";

【问题讨论】:

  • WHERE 子句必须放在ORDER BY 子句之前(FROM 子句之后)MySQL Docs for SELECT statement
  • @MarkBaker:你能举个例子吗?
  • `$sql = "SELECT * FROM login WHERE user_id5 ORDER BY user_id ASC LIMIT 0, 20";
  • @MarkBaker : 如果我不想超过一行,可以说我不想要三行 5,7,8 的查询是什么
  • 对,当答案开始出现时改变问题。总是很好。

标签: php mysql select sql-order-by where-clause


【解决方案1】:

$sql = "SELECT * FROM login WHERE user_id<>5 ORDER BY user_id ASC LIMIT 0, 20 "

看看Order byWhere ClauseOrder of operations

由于您刚刚更改了问题,因此新答案是

$sql = "SELECT * FROM login WHERE user_id NOT IN (5,6,7) ORDER BY user_id ASC LIMIT 0, 20 "

NOT IN

【讨论】:

    【解决方案2】:

    这样做:

     SELECT * FROM login WHERE NOT user_id = 5, ORDER BY user_id ASC LIMIT 0, 20
    

    【讨论】:

      【解决方案3】:

      您必须对多个 id 使用 NOT IN 函数。

      $sql = "SELECT * FROM login WHERE user_id NOT IN (5,6,7) ORDER BY user_id ASC LIMIT 0, 20"
      

      【讨论】:

        【解决方案4】:

        试试这个:

        $sql = "SELECT * FROM `login` WHERE `user_id` NOT IN (5,6,7) ORDER BY `user_id` ASC LIMIT 0, 20";
        

        【讨论】:

        • Ajay 先生的回答有什么新意?
        • 反引号@Sadikhasan
        • 好,供您参考,没有backticks 查询也可以正常工作。
        • 是的,这是真的。我想我需要先看看你的答案,然后再发布我的答案。
        • 我应该删除这个吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多