2011-11-04 66 views
4

条款我不知道这是否可能得到该行:如何知道它是否通过其中的SQL/PHP

SELECT * FROM stuff WHERE barcode = '123123' OR product like '%123123%' 

比方说这将返回10行。由于条形码中有123123,所以10行中有两行得到返回。

现在有可能以某种方式使别名/变量知道它来的原因是它匹配条形码。

所以我可以做:

if($MatchWasFromBarcode) {.... } 

或者将我必须做2个查询此?

+0

您使用的是哪个数据库? –

+0

mysql .......... – Karem

回答

1
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%' 

不要做select *。糟糕的做法。列出你需要的列。

+0

也试过了。它只返回结果,如果它是一个条形码,我希望它返回的结果也是当它不是一个条形码,只是说matches_bar_code应该是0然后 – Karem

+0

@Karem:非常奇怪,我很喜欢99.9999999999999999999999999999999肯定它的工作原理是因为你的where子句正在做'OR'。仔细检查您的查询。 – Icarus

4

假设你正在使用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, 
+1

您先生是魔术师 – Ibu

+0

@Markbyers我得到您的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,在'* – Karem

+0

@Markbyers ok'附近使用正确的语法,我列出了所有列,现在它只返回结果,如果它是条形码。无论如何,我都希望它能够返回,但如果条形码来自条形码,它应该是1 – Karem

相关问题