MYSQL在where子句中选择IF

时间:2013-10-25 19:05:15

标签: mysql

我在MySQL表中有一个项目列表,每个项目都有一个组号和&唯一的商品编号。

我正在尝试选择马赫2标准的记录。

首先,我需要选择满足群组和记录的记录。项目编号。如果没有找到,我希望选择的记录只属于一个组。

无论如何都必须选择一条记录。

2 个答案:

答案 0 :(得分:1)

SELECT *
FROM YourTable
WHERE GroupID = :group
ORDER BY ItemID = :item DESC
LIMIT 1

LIMIT 1只返回一条记录。 ORDER BY子句使它更喜欢与项目标准匹配的记录(如果有的话)。

答案 1 :(得分:0)

试试这个

这不起作用

Select * From MyTable 
Where (GroupID = 1 and ItemID = 2) or (GroupID = 1)

这是有效的

IF EXISTS (SELECT 1 FROM MyTable WHERE GroupID = 1 AND ItemID = 2) 
   BEGIN 
       SELECT TOP 1 * FROM MyTable WHERE GroupID = 1 AND ItemID = 2 
   END 
ELSE 
   BEGIN 
      SELECT TOP 1 * FROM MyTable WHERE GroupID = 1 
   END 
  • 将MyTable替换为您的表名
  • 将GroupID和ItemID替换为列的名称
  • 将数字1和2替换为与您要过滤的列相关联的值