沒關係,對於浪費你的時間,仔細檢查後發現我的實時數據中確實沒有這種情況。當我第一次問我的客戶時,應該有一些他們。他們在哪裏錯了,我會責怪MySQL。查詢在不同的服務器上返回奇怪的和不同的結果
在我的應用程序下面的查詢運行的情況:
SELECT s.*, c.company_name, c.kvk_number
FROM wp_kvk_statements as s
LEFT JOIN wp_kvk_companies as c ON s.company_id = c.id
WHERE s.status < 2 AND c.status = 1
ORDER BY company_id, s.year DESC
問題
在我的dev的服務器此查詢正確返回的所有行狀態在wp_kvk_statements小於2(即0或1)。對於wp_kvk_companies表中狀態爲1的公司。
但是在我的活動服務器上,只返回wp_kvk_statements中狀態爲1的行,就好像c.status = 1被解釋爲錯誤。
問題
爲什麼會出現這種情況,我怎麼能解決這個問題。
背景信息
開發服務器的MySQL出口(這是它的工作原理):
-- phpMyAdmin SQL Dump
-- version 3.4.10.1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Dec 03, 2012 at 01:22 PM
-- Server version: 5.5.20
-- PHP Version: 5.3.10
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
-- --------------------------------------------------------
--
-- Table structure for table `wp_kvk_companies`
--
CREATE TABLE `wp_kvk_companies` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`industry_id` int(11) NOT NULL,
`company_name` char(255) CHARACTER SET utf8 NOT NULL,
`kvk_number` char(12) NOT NULL,
`status` int(11) NOT NULL DEFAULT '1',
`last_crawled` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `wp_kvk_statements`
--
CREATE TABLE `wp_kvk_statements` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`company_id` int(11) NOT NULL,
`year` int(4) NOT NULL,
`bought` tinyint(1) NOT NULL,
`analyzed` tinyint(1) NOT NULL,
`status` int(11) NOT NULL,
`added` datetime NOT NULL,
`updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`updated_by_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `unique` (`company_id`,`year`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Live服務器的MySQL出口(這是它被打破):
-- phpMyAdmin SQL Dump
-- version 3.5.2.2
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Dec 03, 2012 at 02:25 PM
-- Server version: 5.5.9
-- PHP Version: 5.3.17
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
--
-- Database: `deb51918_annuall`
--
-- --------------------------------------------------------
--
-- Table structure for table `wp_kvk_companies`
--
CREATE TABLE `wp_kvk_companies` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`industry_id` int(11) NOT NULL,
`company_name` char(255) CHARACTER SET utf8 NOT NULL,
`kvk_number` char(12) NOT NULL,
`status` int(11) NOT NULL DEFAULT '1',
`last_crawled` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `wp_kvk_statements`
--
CREATE TABLE `wp_kvk_statements` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`company_id` int(11) NOT NULL,
`year` int(4) NOT NULL,
`bought` tinyint(1) NOT NULL,
`analyzed` tinyint(1) NOT NULL,
`status` int(11) NOT NULL,
`added` datetime NOT NULL,
`updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`updated_by_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `unique` (`company_id`,`year`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
您是否嘗試過扭轉測試?在s.status <2之前c.status = 1? – dmaij
你能提供一些行的例子嗎? (包括和排除) –