【发布时间】:2016-12-09 14:15:23
【问题描述】:
我需要为这个 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'
我已经搜索并使用了很多不同的示例,但似乎没有任何效果。任何建议或线索将不胜感激。
干杯
【问题讨论】:
-
你在这里犯了一个严重的错误 - 你有值
vic并且你正在交换你正在搜索该值的列。在 SQL 中,我们以相反的方式做事——我们的列是不变的,而我们的值是变化的。此外,IF 是在 SELECT 部分完成的,而不是在 WHERE 之后。从技术上讲,即使您解决了以某种方式提出解决方案的问题,您的设计也是 100% 明确错误的。为了按照我们想要的方式做事,我们使用规范化,它可以让我们以各种方式查询数据(它总是有效的)。您的设计未标准化。 -
有点刺耳,不知道是什么情况导致数据排成这样;据我们所知,它可能是一个继承的数据库。
-
@pala_ - 我不是在讨论 是什么 导致了这样的设计,我只是强调这种方法引起的问题。当人们以错误的方式使用工具时,就会发生坏事——就像这里一样。然后需要一个巨大的 hack 来使其按预期工作,而应该做的只是一个简单且适当的数据模型构造。
-
我不明白 state1 是表的 state2 列吗?
-
感谢您的反馈 NB 但@pala 确实是正确的。数据库直接来自MYOB软件。感谢您抽出时间告诉我我做错了什么。
标签: php mysql sql if-statement