php - Mysql SELECT 具有 OR 跨 2 列

标签 php mysql

我正在创建一个“相似项目”链接表。

我有一个 2 列表。两列都包含产品 ID。

CREATE TABLE IF NOT EXISTS `prod_similar` (
  `id_a` int(11) NOT NULL,
  `id_b` int(11) NOT NULL
)    

INSERT INTO `prod_similar` (`id_a`, `id_b`) VALUES
(5, 10),
(5, 15),
(10, 13),
(10, 14),
(14, 5),
(14, 13);

我想选择 3 个相似的产品,优先选择 id 在第一列 'id_a' 的产品

SELECT * FROM prod_similar WHERE id_a={$id} OR id_b={$id}
ORDER BY column(?) 
LIMIT 3

最佳答案

不知道,也许是这个?

SELECT * 
FROM similar_items 
WHERE col_1={$id} OR col_2={$id} 
ORDER BY CASE WHEN col_1={$id} THEN 0 WHEN col_2={$id} THEN 1 END 
LIMIT 3

关于php - Mysql SELECT 具有 OR 跨 2 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2507611/

相关文章:

mysql - SQL 渲染 XML 数据时出现特殊字符乱码

javascript - 如何将变量值从 JavaScript 传递到 PHP

php - 为什么尽管在镜像构建期间通过 "drush"安装了 `composer global install`,但我无法从正在运行的 PHP 脚本中找到该工具?

MySQL比较时间戳给出错误

mysql - 从具有外键约束的 Mysql 表中删除数据的脚本

mysql - 如何将数据库从数百 MB 的大型 SQL 文件导入到 MySQL

mysql - mysql的问题从 Doctrine 原始sql创建过程

php - 从二维数组 php 回显一个元素

php - 如何创建查询以获得正确的复数结果?

PHP curl : Manually setting the content-length header