如何知道它是否通过sql/php中的where子句获得了行

如何知道它是否通过sql/php中的where子句获得了行,php,mysql,sql,Php,Mysql,Sql,我不知道这是否可能: SELECT * FROM stuff WHERE barcode = '123123' OR product like '%123123%' 假设返回10行。十行中有两行返回,因为它们的条形码中有123123 现在是否有可能通过某种方式使别名/变量知道它的出现,因为它与条形码匹配 所以我可以做到: if($MatchWasFromBarcode) {.... } 或者我必须对此进行两次查询吗?假设您使用的是MySQL: SELECT barcode = '1

我不知道这是否可能:

SELECT * FROM stuff WHERE barcode = '123123' OR product like '%123123%'
假设返回10行。十行中有两行返回,因为它们的条形码中有123123

现在是否有可能通过某种方式使别名/变量知道它的出现,因为它与条形码匹配

所以我可以做到:

if($MatchWasFromBarcode) {.... }

或者我必须对此进行两次查询吗?

假设您使用的是MySQL:

SELECT 
    barcode = '123123' AS MatchWasFromBarcode,
    col1, col2, ..., coln
FROM stuff
WHERE barcode = '123123' OR product like '%123123%'
对于其他数据库,将第二行更改为:

    CASE WHEN barcode = '123123' THEN 1 ELSE 0 END AS MatchWasFromBarcode,

不要执行
选择*
。坏习惯。列出您需要的列。

@Markbyers我知道您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在“*@Markbyers ok”附近使用的正确语法。我列出了所有列,现在它只返回结果(如果是条形码)。我希望它返回无论什么,但matchesbarcode应该是1,如果它来自一个条形码尝试了这个。它只返回结果,如果它是一个条形码,我希望它也返回结果时,它不是一个条形码,只是匹配的条形码应该是0then@Karem:非常奇怪,我想99.999999999999999999999999999999999%肯定它能工作,因为您的where子句正在执行
。再次检查您的查询。
SELECT case when barcode='your_value' then 1 else 0 end as matches_bar_code
, col1
, col2
, col3
, col4
FROM stuff 
WHERE barcode = '123123' 
OR product like '%123123%'