如果那么在mySQL查询中

时间:2015-04-09 10:31:48

标签: php mysql sql if-statement

我需要找到这个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'

我搜索并玩了很多不同的例子,但似乎没什么用。任何建议或线索都会受到最高的赞赏。

干杯

4 个答案:

答案 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'))

试试这个,让我知道。