【问题标题】:Sql - Order by integer/stringSql - 按整数/字符串排序
【发布时间】:2023-03-26 02:36:01
【问题描述】:

我在我的查询中使用这个选择:

$stmt = $dbh->prepare("SELECT column FROM table WHERE category = :category ORDER BY clicks DESC LIMIT 4");

但是,这就是该列的工作方式:

clicks varchar(10) NOT NULL,

所以它不完全是一个整数,而是一个字符串......

这是查询无法正常工作的原因吗? 有什么办法可以解决吗?

您好!

【问题讨论】:

  • 我们不知道有什么问题 - 你没有告诉我们。
  • @YCS,这个是PDO相关的,请不要回滚。
  • 您能否详细说明查询无法正常工作?你得到什么输出?你期待什么输出?
  • 如果我的数据库中有 (12,3,22,50),则按以下顺序显示:12,3,22,50

标签: php sql int varchar


【解决方案1】:

真正的解决方案当然是使列成为整数,但如果你真的无法改变它,你可以使用这样的东西(虽然有点黑客......):

SELECT column FROM table WHERE category = :category 
  ORDER BY LENGTH(clicks) DESC, clicks DESC LIMIT 4

【讨论】:

    猜你喜欢
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多