我需要找到这个php mysql查询的正确语法,尽管搜索和反复试验,我还是画了一个空白。
我有一个库存商表 - “库存商”,我需要根据state1,state2或两者的存在从每行中提取数据。如果只有state1存在,则拉出该记录,如果它们都存在那么我需要基于state2的记录。
SELECT * FROM `Stockists` WHERE state1 = 'vic' AND state2 IS NULL
IF state2 IS NOT NULL
THEN
SELECT * FROM `Stockists` WHERE state2 = 'vic'
我搜索并玩了很多不同的例子,但似乎没什么用。任何建议或线索都会受到最高的赞赏。
干杯
答案 0 :(得分:1)
select *
from stockists
where (state2 = 'vic') or (state1 = 'vic' and state2 is null);
试一试。获取state2设置为vic的所有stockists,以及state1设置为vic的所有stockists,其中state2未设置。这是一个试用的演示:http://sqlfiddle.com/#!9/15a08/1
它不会检索state1 ='vic'和state2 ='someotherstate'
的记录答案 1 :(得分:0)
SELECT * FROM Stockists WHERE (state2 IS NULL and state1 = 'vic')
OR (state2 = 'vic')
答案 2 :(得分:0)
不确定它是否会回答你的问题,但是你可以在这里了解如何在mysql中使用statment。
SELECT
IF(state1 = 'vic', 'yes', 'no') as 'match fist condition',
IF(state2 = 'vic', 'yes', 'no') as 'match second condition',
IF(state1 = 'vic' and state2 = 'vic', 'yes', 'no') as 'match both conditions'
FROM stockists
WHERE state1 = 'vic' or state2 = 'vic'
;
答案 3 :(得分:-1)
SELECT
*
FROM
`Stockists`
WHERE
IF(state1 = 'vic', state1 = 'vic' , (state1 = 'vic' OR state2 ='vic'))
试试这个,让我知道。